It's expected that a slaves could be pulled out of service due to
maintenance or large lag delay.

This patch adds a new line and only reports it once per process.   All of
this could be done in a custom debug class, of course.  But, I'm not clear
how common it is for people to use their own debug object.


diff --git a/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm
b/lib/DBIx/Class/
index 025048b..e79cb39 100644
--- a/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm
+++ b/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm
@@ -127,6 +127,8 @@ or just just forgot to create them :)

 =cut

+my $on_master;
+
 around 'next_storage' => sub {
   my ($next_storage, $self, @args) = @_;
   my $now = time;
@@ -141,9 +143,13 @@ around 'next_storage' => sub {

   ## Get a replicant, or the master if none
   if(my $next = $self->$next_storage(@args)) {
+    $self->master->debugobj->print("$$ Moved back to slave\n") if
$on_master;
+    $on_master = 0;
     return $next;
   } else {
-    $self->master->debugobj->print("No Replicants validate, falling back to
mas
+    $self->master->debugobj->print("No Replicants validate, falling back
to
+       unless $on_master++;
+
     return $self->master;
   }
 };


-- 
Bill Moseley
[email protected]
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[email protected]

Reply via email to