From 761b961649809c535c33747b3b4d839b832315c6 Mon Sep 17 00:00:00 2001 From: gmc Date: Sun, 26 Sep 2010 02:42:50 +0000 Subject: [PATCH] don't leak cstores if CStoreEditor rollback fails Patch by Mike Rylander. Signed-off-by: Galen Charlton git-svn-id: svn://svn.open-ils.org/ILS/trunk@17995 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../perlmods/OpenILS/Utils/CStoreEditor.pm | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm b/Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm index 178818647f..984562362e 100644 --- a/Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm +++ b/Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm @@ -294,8 +294,17 @@ sub rollback_savepoint { # ----------------------------------------------------------------------------- sub rollback { my $self = shift; - $self->xact_rollback; - $self->disconnect; + my $err; + my $ret; + try { + $self->xact_rollback; + } catch Error with { + $err = shift + } finally { + $ret = $self->disconnect + }; + throw $err if ($err); + return $ret; } sub disconnect { @@ -334,8 +343,17 @@ sub reset { # ----------------------------------------------------------------------------- sub finish { my $self = shift; - $self->commit; - $self->reset; + my $err; + my $ret; + try { + $self->commit; + } catch Error with { + $err = shift + } finally { + $ret = $self->reset + }; + throw $err if ($err); + return $ret; } -- 2.43.2