From e10c2884d76fa52f3fe3d52daaef50d4df416bf5 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Tue, 3 Apr 2018 03:51:51 +0000 Subject: [PATCH] Bug 9302 [QA Followup]: Merge should be a transaction --- Koha/Patrons.pm | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Koha/Patrons.pm b/Koha/Patrons.pm index 1afb440e08..0ef5f4f0b9 100644 --- a/Koha/Patrons.pm +++ b/Koha/Patrons.pm @@ -260,23 +260,25 @@ sub merge { my $results; - foreach my $borrowernumber (@borrowernumbers) { - my $patron = Koha::Patrons->find( $borrowernumber ); + $self->_resultset->result_source->schema->txn_do( sub { + foreach my $borrowernumber (@borrowernumbers) { + my $patron = Koha::Patrons->find( $borrowernumber ); - next unless $patron; + next unless $patron; - # Unbless for safety, the patron will end up being deleted - $results->{merged}->{$borrowernumber}->{patron} = $patron->unblessed; + # Unbless for safety, the patron will end up being deleted + $results->{merged}->{$borrowernumber}->{patron} = $patron->unblessed; - while (my ($r, $field) = each(%$RESULTSET_PATRON_ID_MAPPING)) { - my $rs = $schema->resultset($r)->search({ $field => $borrowernumber} ); - $results->{merged}->{ $borrowernumber }->{updated}->{$r} = $rs->count(); - $rs->update( { $field => $keeper }); - } + while (my ($r, $field) = each(%$RESULTSET_PATRON_ID_MAPPING)) { + my $rs = $schema->resultset($r)->search({ $field => $borrowernumber} ); + $results->{merged}->{ $borrowernumber }->{updated}->{$r} = $rs->count(); + $rs->update( { $field => $keeper }); + } - $patron->move_to_deleted(); - $patron->delete(); - } + $patron->move_to_deleted(); + $patron->delete(); + } + }); $results->{keeper} = $patron_to_keep; -- 2.15.1 (Apple Git-101)