X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FBlockRunner.pm;h=0f884daac1fb9f4bf7707c81e4574c41eb59ee5a;hb=ddcc02d1;hp=0a8ddeddcfbe08009bd35980e827e526b74d2012;hpb=db83437ef48f4571e1d225572cc7235eb5e64fe3;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/BlockRunner.pm b/lib/DBIx/Class/Storage/BlockRunner.pm index 0a8dded..0f884da 100644 --- a/lib/DBIx/Class/Storage/BlockRunner.pm +++ b/lib/DBIx/Class/Storage/BlockRunner.pm @@ -7,7 +7,7 @@ use strict; use DBIx::Class::Exception; use DBIx::Class::Carp; use Context::Preserve 'preserve_context'; -use DBIx::Class::_Util qw(is_exception qsub); +use DBIx::Class::_Util qw( is_exception qsub dbic_internal_try ); use Scalar::Util qw(weaken blessed reftype); use Try::Tiny; use Moo; @@ -122,7 +122,7 @@ sub _run { my $run_err = ''; return preserve_context { - try { + dbic_internal_try { if (defined $txn_init_depth) { $self->storage->txn_begin; $txn_begin_ok = 1; @@ -156,7 +156,13 @@ sub _run { ) unless $delta_txn == 1 and $cur_depth == 0; } else { - $run_err = eval { $storage->txn_commit; 1 } ? '' : $@; + dbic_internal_try { + $storage->txn_commit; + 1; + } + catch { + $run_err = $_; + }; } }