From c0c32cc43d29ad413abda1ba52c202543ae28946 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=utf8 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ä Signed-off-by: Jonathan Druart (cherry picked from commit 76c38d10d06dfcc377ab82cd312b12b8457a2dc8) Signed-off-by: Fridolin Somers (cherry picked from commit d641561125d861236157d8b6f7edc6870a96a866) Signed-off-by: Andrew Fuerste-Henry (cherry picked from commit e7d9ef4116657ecc8e1b6dfcdac713f60d3e6474) Signed-off-by: Victor Grousset/tuxayo --- C4/Circulation.pm | 2 -- 1 file changed, 2 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 20a419d300..f03912352b 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -3483,7 +3483,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); @@ -3495,7 +3494,6 @@ sub SendCirculationAlert { $message->update; } C4::Context->dbh->do(q|UNLOCK TABLES|) unless $do_not_lock; - $schema->storage->txn_commit; } return; -- 2.39.5