From a486fcf4de6ed1b54289f93542258df2f0f20d97 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 21 Jun 2017 14:14:09 -0300 Subject: [PATCH] Bug 18651: Do no LOCK/UNLOCK the table We cannot LOCK the old_issues table here, other tables are accessed and DBIx::Class rename it with "me": DBD::mysql::st execute failed: Table 'me' was not locked with LOCK TABLES [for Statement "SELECT `me`.`issue_id`, `me`.`borrowernumber`, `me`.`itemnumber`, `me`.`date_due`, `me`.`branchcode`, `me`.`returndate`, `me`.`lastreneweddate`, `me`.`renewals`, `me`.`auto_renew`, `me`.`auto_renew_error`, `me`.`timestamp`, `me`.`issuedate`, `me`.`onsite_checkout`, `me`.`note`, `me`.`notedate` FROM `old_issues` `me` WHERE ( `me`.`issue_id` = ? )" with ParamValues: 0='2'] at /usr/share/perl5/DBIx/Class/Storage/DBI.pm line 1832. Consequence: We could have a checkin refused if there is a race, but this is the simplest and safest way to fix it. (cherry picked from commit 905572910b3af03d86fdbd3e52c72614f41c978b) Signed-off-by: Fridolin Somers --- C4/Circulation.pm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index e25167d5c5..1cfa69b2d2 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2172,14 +2172,10 @@ sub MarkIssueReturned { push @bind, $issue_id; # FIXME Improve the return value and handle it from callers - my $do_not_lock = ( exists $ENV{_} && $ENV{_} =~ m|prove| ) || $ENV{KOHA_NO_TABLE_LOCKS}; $schema->txn_do(sub { $dbh->do( $query, undef, @bind ); - C4::Context->dbh->do(q|LOCK TABLE old_issues READ|) unless $do_not_lock; - C4::Context->dbh->do(q|LOCK TABLE old_issues WRITE|) unless $do_not_lock; - my $issue = Koha::Checkouts->find( $issue_id ); # FIXME should be fetched earlier # Create the old_issues entry @@ -2196,8 +2192,6 @@ sub MarkIssueReturned { $old_checkout_data->{issue_id} = $issue_id; my $old_checkout = Koha::Old::Checkout->new($old_checkout_data)->store; - C4::Context->dbh->do(q|UNLOCK TABLES|) unless $do_not_lock; - # Update the fines $dbh->do(q|UPDATE accountlines SET issue_id = ? WHERE issue_id = ?|, undef, $old_checkout->issue_id, $issue->issue_id); -- 2.39.5