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 <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Mason James <mtj@kohaaloha.com>
(cherry picked from commit 15751085e9)
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
This commit is contained in:
Marcel de Rooy 2017-04-20 12:52:47 +02:00 committed by Julian Maurice
parent b710291ec9
commit d3d4572ebf
1 changed files with 5 additions and 5 deletions

View File

@ -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;
}