From a6311e4529cbcdc98fb0ce2fcad1596165cad4ce Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 16 Feb 2021 09:06:03 +0100 Subject: [PATCH] Bug 27707: (bug 26639 follow-up) Fix renewals when RenewalSendNotice is set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since bug 26639 we have auto savepoint enabled and the LOCK TABLE query in C4::Circulation::SendCirculationAlert is not correctly handled. From the MySQL doc that is copied few lines before, "LOCK TABLE will commit any transactions", but here we don't have a savepoint and the release for a non-existent savepoint will throw a DBI exception. This patch removes the unecessary transaction and prevent the following error when a renewal is done: > DBIx::Class::Storage::DBI::mysql::_exec_svp_release(): DBI Exception: DBD::mysql::db do failed: SAVEPOINT savepoint_0 does not exist [for Statement "RELEASE SAVEPOINT savepoint_0"] at /usr/share/koha/lib/C4/Circulation.pm line 3590 Test plan: 1. Enable RenewalSendNotice 2. Add some email address to patron and select the email box from the message preference "Item checkout and renewal" in order to receive renewal emails. 3. Check 1 item out to a patron 4. Renew it Signed-off-by: Andrew Nugged Signed-off-by: Joonas Kylmälä --- C4/Circulation.pm | 2 -- 1 file changed, 2 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 401ea2e772..dfde90d810 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -3542,7 +3542,6 @@ sub SendCirculationAlert { } ) or next; - $schema->storage->txn_begin; C4::Context->dbh->do(q|LOCK TABLE message_queue READ|) unless $do_not_lock; C4::Context->dbh->do(q|LOCK TABLE message_queue WRITE|) unless $do_not_lock; my $message = C4::Message->find_last_message($borrower, $type, $mtt); @@ -3554,7 +3553,6 @@ sub SendCirculationAlert { $message->update; } C4::Context->dbh->do(q|UNLOCK TABLES|) unless $do_not_lock; - $schema->storage->txn_commit; } return; -- 2.11.0