Try::Tiny conversion finished
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Replicated.pm
index 51bd137..783d334 100644 (file)
@@ -16,6 +16,7 @@ use MooseX::Types::Moose qw/ClassName HashRef Object/;
 use Scalar::Util 'reftype';
 use Hash::Merge;
 use List::Util qw/min max reduce/;
+use Try::Tiny;
 
 use namespace::clean -except => 'meta';
 
@@ -308,7 +309,6 @@ has 'write_handler' => (
     is_datatype_numeric
     _supports_insert_returning
     _count_select
-    _subq_count_select
     _subq_update_delete
     svp_rollback
     svp_begin
@@ -373,6 +373,8 @@ has 'write_handler' => (
 my @unimplemented = qw(
   _arm_global_destructor
   _preserve_foreign_dbh
+  _verify_pid
+  _verify_tid
 );
 
 for my $method (@unimplemented) {
@@ -649,7 +651,7 @@ sub execute_reliably {
   my @result;
   my $want_array = wantarray;
 
-  eval {
+  try {
     if($want_array) {
       @result = $coderef->(@args);
     } elsif(defined $want_array) {
@@ -657,19 +659,14 @@ sub execute_reliably {
     } else {
       $coderef->(@args);
     }
+  } catch {
+    $self->throw_exception("coderef returned an error: $_");
+  } finally {
+    ##Reset to the original state
+    $self->read_handler($current);
   };
 
-  ##Reset to the original state
-  $self->read_handler($current);
-
-  ##Exception testing has to come last, otherwise you might leave the 
-  ##read_handler set to master.
-
-  if($@) {
-    $self->throw_exception("coderef returned an error: $@");
-  } else {
-    return $want_array ? @result : $result[0];
-  }
+  return $want_array ? @result : $result[0];
 }
 
 =head2 set_reliable_storage
@@ -1049,22 +1046,6 @@ sub _get_server_version {
   return $self->_server_info->{dbms_version};
 }
 
-sub _verify_pid {
-  my $self = shift;
-
-  for my $storage ($self->all_storages) {
-    $storage->_verify_pid;
-  }
-}
-
-sub _verify_tid {
-  my $self = shift;
-
-  for my $storage ($self->all_storages) {
-    $storage->_verify_tid;
-  }
-}
-
 =head1 GOTCHAS
 
 Due to the fact that replicants can lag behind a master, you must take care to