From d3d4572ebfa53c4abda1b2129f8f7b2a09b8eef4 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 20 Apr 2017 12:52:47 +0200 Subject: [PATCH] Bug 18364: [Follow-up] Also add an environment variable to prevent locking The test in SendCirculationAlert is extended by adding an env var called KOHA_NO_TABLE_LOCKS. If this var is set to a true value, the table locking is skipped too. This is useful when running a test without prove. The variable could be set in a shell profile. Signed-off-by: Marcel de Rooy Signed-off-by: Mason James (cherry picked from commit 15751085e950b38df235d11e958259e15ef48f37) Signed-off-by: Julian Maurice --- C4/Circulation.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 47009a6747..2f0d351bd0 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -3374,7 +3374,7 @@ sub SendCirculationAlert { # LOCK TABLES is not transaction-safe and implicitly commits any active transaction before attempting to lock the tables. # If the LOCK/UNLOCK statements are executed from tests, the current transaction will be committed. # To avoid that we need to guess if this code is execute from tests or not (yes it is a bit hacky) - my $called_from_tests = exists $ENV{_} and $ENV{_} =~ m|prove|; + my $do_not_lock = ( exists $ENV{_} && $ENV{_} =~ m|prove| ) || $ENV{KOHA_NO_TABLE_LOCKS}; for my $mtt (@transports) { my $letter = C4::Letters::GetPreparedLetter ( @@ -3393,17 +3393,17 @@ sub SendCirculationAlert { ) or next; $schema->storage->txn_begin; - C4::Context->dbh->do(q|LOCK TABLE message_queue READ|) unless $called_from_tests; - C4::Context->dbh->do(q|LOCK TABLE message_queue WRITE|) unless $called_from_tests; + 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); unless ( $message ) { - C4::Context->dbh->do(q|UNLOCK TABLES|) unless $called_from_tests; + C4::Context->dbh->do(q|UNLOCK TABLES|) unless $do_not_lock; C4::Message->enqueue($letter, $borrower, $mtt); } else { $message->append($letter); $message->update; } - C4::Context->dbh->do(q|UNLOCK TABLES|) unless $called_from_tests; + C4::Context->dbh->do(q|UNLOCK TABLES|) unless $do_not_lock; $schema->storage->txn_commit; } -- 2.39.5