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
# 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;