From 3f4f17b8583b87cccc8551227f784d074ed2000a Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Fri, 26 Feb 2021 10:26:27 +0000 Subject: [PATCH] Bug 26457: (QA follow-up) Switch to PK index in UPDATE on issues Content-Type: text/plain; charset=utf-8 The deadlock reports tell us that multiple transactions are waiting for a X lock on a record but using a secondary index on borrowernumber and itemnumber. Since we have the issue_id at hand already, we should use that and benefit from the clustered index (on PK) instead of using a secondary index. Signed-off-by: Marcel de Rooy --- C4/Circulation.pm | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 021d80a65e..24bed92278 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -3034,13 +3034,10 @@ sub AddRenewal { # Update the issues record to have the new due date, and a new count # of how many times it has been renewed. my $renews = ( $issue->renewals || 0 ) + 1; - my $sth = $dbh->prepare("UPDATE issues SET date_due = ?, renewals = ?, unseen_renewals = ?, lastreneweddate = ? - WHERE borrowernumber=? - AND itemnumber=?" - ); + my $sth = $dbh->prepare("UPDATE issues SET date_due = ?, renewals = ?, unseen_renewals = ?, lastreneweddate = ? WHERE issue_id = ?"); eval{ - $sth->execute( $datedue->strftime('%Y-%m-%d %H:%M'), $renews, $unseen_renewals, $lastreneweddate, $borrowernumber, $itemnumber ); + $sth->execute( $datedue->strftime('%Y-%m-%d %H:%M'), $renews, $unseen_renewals, $lastreneweddate, $issue->issue_id ); }; if( $sth->err ){ Koha::Exceptions::Checkout::FailedRenewal->throw( -- 2.11.0