From: Bill Erickson Date: Wed, 15 Jun 2016 14:30:59 +0000 (-0400) Subject: hold targeter reify experiment X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=ae01d8210f619cf9dbb2dc7ed366684092ba3780;p=working%2FEvergreen.git hold targeter reify experiment Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Utils/HoldTargeter.pm b/Open-ILS/src/perlmods/lib/OpenILS/Utils/HoldTargeter.pm index ca1b6fed07..6cd8be5c03 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Utils/HoldTargeter.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Utils/HoldTargeter.pm @@ -290,18 +290,25 @@ sub copy_prox_map { # and returns false. sub exit_targeter { my ($self, $msg, $is_error) = @_; + $self->message($msg); + my $log = "targeter: exiting hold ".$self->hold_id." : $msg"; - # Force a rollback when exiting on error. - # This is a no-op if a commit or rollback have already occurred. - $self->editor->rollback if $is_error; + if ($is_error) { + # On error, roll back and capture the last editor event for logging. - my $log = "targeter: exiting hold targeter on ".$self->hold_id." : $msg"; + my $evt = $self->editor->die_event; + $log .= " [".$evt->{textcode}."]" if $evt; - if ($is_error) { - $self->error($is_error); + $self->error(1); $logger->error($log); + } else { + # Attempt a rollback and disconnect when each hold exits + # to avoid the possibility of leaving cstore's pinned. + # Note: ->rollback is a no-op when a ->commit has already occured. + + $self->editor->rollback; $logger->info($log); }