Audit all local() calls within lib/ and t/lib
[dbsrgits/DBIx-Class-Historic.git] / lib / DBIx / Class / Storage / BlockRunner.pm
index 0f884da..9d191c8 100644 (file)
@@ -187,7 +187,13 @@ sub _run {
           # FIXME - we assume that $storage->{_dbh_autocommit} is there if
           # txn_init_depth is there, but this is a DBI-ism
           $txn_init_depth > ( $storage->{_dbh_autocommit} ? 0 : 1 )
-        ) or ! $self->retry_handler->($self)
+        )
+          or
+        ! do {
+          local $self->storage->{_in_do_block_retry_handler} = 1
+            unless $self->storage->{_in_do_block_retry_handler};
+          $self->retry_handler->($self)
+        }
       );
 
       # we got that far - let's retry