Bug 32990: Prevent deadlock in _update_batch_record_counts
Resolves: C4::ImportBatch::_update_batch_record_counts(): DBI Exception: DBD::mysql::st execute failed: Deadlock found when trying to get lock; try restarting transaction at /usr/share/koha/C4/ImportBatch.pm line 392 See also bug 32558. Test plan: If you apply 32558 first, run multiple processes that stage a marc import. Without this patch, you can trigger the deadlock. With this patch, it works. Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
2504a282b5
commit
9a6d10dc31
1 changed files with 13 additions and 10 deletions
|
@ -1724,21 +1724,24 @@ sub _update_batch_record_counts {
|
|||
my ($batch_id) = @_;
|
||||
|
||||
my $dbh = C4::Context->dbh;
|
||||
my $sth = $dbh->prepare_cached("UPDATE import_batches SET
|
||||
num_records = (
|
||||
my ( $num_records ) = $dbh->selectrow_array(q|
|
||||
SELECT COUNT(*)
|
||||
FROM import_records
|
||||
WHERE import_batch_id = import_batches.import_batch_id),
|
||||
num_items = (
|
||||
WHERE import_batch_id = ?
|
||||
|, undef, $batch_id );
|
||||
my ( $num_items ) = $dbh->selectrow_array(q|
|
||||
SELECT COUNT(*)
|
||||
FROM import_records
|
||||
JOIN import_items USING (import_record_id)
|
||||
WHERE import_batch_id = import_batches.import_batch_id
|
||||
AND record_type = 'biblio')
|
||||
WHERE import_batch_id = ?");
|
||||
$sth->bind_param(1, $batch_id);
|
||||
$sth->execute();
|
||||
$sth->finish();
|
||||
WHERE import_batch_id = ? AND record_type = 'biblio'
|
||||
|, undef, $batch_id );
|
||||
$dbh->do(
|
||||
"UPDATE import_batches SET num_records=?, num_items=? WHERE import_batch_id=?",
|
||||
undef,
|
||||
$num_records,
|
||||
$num_items,
|
||||
$batch_id,
|
||||
);
|
||||
}
|
||||
|
||||
sub _get_commit_action {
|
||||
|
|
Loading…
Reference in a new issue