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]