X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FBlockRunner.pm;h=ad9cbf7bd52f8f740143f206844c045a3277e385;hb=84efb6d7f74f92330bf03e923a5386bbf5e7cf7e;hp=4c5af9a23544913f5e57b34f4b1610c06597213f;hpb=cbd7f87a859ccbb026af01fe38c832596323f156;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/BlockRunner.pm b/lib/DBIx/Class/Storage/BlockRunner.pm index 4c5af9a..ad9cbf7 100644 --- a/lib/DBIx/Class/Storage/BlockRunner.pm +++ b/lib/DBIx/Class/Storage/BlockRunner.pm @@ -10,27 +10,7 @@ use Context::Preserve 'preserve_context'; use DBIx::Class::_Util qw(is_exception qsub); use Scalar::Util qw(weaken blessed reftype); use Try::Tiny; - -# DO NOT edit away without talking to riba first, he will just put it back -# BEGIN pre-Moo2 import block -BEGIN { - my $initial_fatal_bits = (${^WARNING_BITS}||'') & $warnings::DeadBits{all}; - - local $ENV{PERL_STRICTURES_EXTRA} = 0; - # load all of these now, so that lazy-loading does not escape - # the current PERL_STRICTURES_EXTRA setting - require Sub::Quote; - require Sub::Defer; - require Moo; - require Moo::Object; - require Method::Generate::Accessor; - require Method::Generate::Constructor; - - Moo->import; - ${^WARNING_BITS} &= ( $initial_fatal_bits | ~ $warnings::DeadBits{all} ); -} -# END pre-Moo2 import block - +use Moo; use namespace::clean; =head1 NAME @@ -178,22 +158,10 @@ sub _run { # something above threw an error (could be the begin, the code or the commit) if ( is_exception $run_err ) { - # attempt a rollback if we did begin in the first place - if ($txn_begin_ok) { - # some DBDs go crazy if there is nothing to roll back on, perform a soft-check - my $rollback_exception = $storage->_seems_connected - ? (! eval { $storage->txn_rollback; 1 }) ? $@ : '' - : 'lost connection to storage' - ; - - if ( $rollback_exception and ( - ! defined blessed $rollback_exception - or - ! $rollback_exception->isa('DBIx::Class::Storage::NESTED_ROLLBACK_EXCEPTION') - ) ) { - $run_err = "Transaction aborted: $run_err. Rollback failed: $rollback_exception"; - } - } + # Attempt a rollback if we did begin in the first place + # Will append rollback error if possible + $storage->__delicate_rollback( \$run_err ) + if $txn_begin_ok; push @{ $self->exception_stack }, $run_err; @@ -233,13 +201,16 @@ sub _run { }; } -=head1 AUTHOR AND CONTRIBUTORS +=head1 FURTHER QUESTIONS? -See L and L in DBIx::Class +Check the list of L. -=head1 LICENSE +=head1 COPYRIGHT AND LICENSE -You may distribute this code under the same terms as Perl itself. +This module is free software L +by the L. You can +redistribute it and/or modify it under the same terms as the +L. =cut