X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated%2FReplicant.pm;h=9e32ca39e837cbc5c472c0fa3680e834d18c4bb0;hb=41916570b3a93b05746e23b73c9a9b5005bc0d2e;hp=8d5329745a2a6ec7c3c6ced56ea8289fd17c1bdf;hpb=503363253e1fa2c35e3b5368dd7f453b9cfbc6a1;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm b/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm index 8d53297..9e32ca3 100644 --- a/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm +++ b/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm @@ -1,16 +1,18 @@ package DBIx::Class::Storage::DBI::Replicated::Replicant; -use Moose; -extends 'DBIx::Class::Storage::DBI', 'Moose::Object'; +use Moose::Role; +requires qw/_query_start/; +use MooseX::Types::Moose qw/Bool/; + +use namespace::clean -except => 'meta'; =head1 NAME -DBIx::Class::Storage::DBI::Replicated::Replicant; A replicated DBI Storage +DBIx::Class::Storage::DBI::Replicated::Replicant - A replicated DBI Storage Role =head1 SYNOPSIS -This class is used internally by L. You -shouldn't need to create instances of this class. +This class is used internally by L. =head1 DESCRIPTION @@ -32,33 +34,52 @@ This is a boolean which allows you to programmatically activate or deactivate a replicant from the pool. This way to you do stuff like disallow a replicant when it get's too far behind the master, if it stops replicating, etc. +This attribute DOES NOT reflect a replicant's internal status, i.e. if it is +properly replicating from a master and has not fallen too many seconds behind a +reliability threshold. For that, use L and L. +Since the implementation of those functions database specific (and not all DBIC +supported DB's support replication) you should refer your database specific +storage driver for more information. + =cut has 'active' => ( - is=>'rw', - isa=>'Bool', - lazy=>1, - required=>1, - default=>1, + is=>'rw', + isa=>Bool, + lazy=>1, + required=>1, + default=>1, ); - =head1 METHODS This class defines the following methods. -=head2 after: _query_start +=head2 around: _query_start advice iof the _query_start method to add more debuggin =cut around '_query_start' => sub { - my ($method, $self, $sql, @bind) = @_; - my $dsn = $self->connect_info->[0]; - $self->$method("DSN: $dsn SQL: $sql", @bind); + my ($method, $self, $sql, @bind) = @_; + my $dsn = $self->_dbi_connect_info->[0]; + $self->$method("DSN: $dsn SQL: $sql", @bind); }; +=head2 debugobj + +Override the debugobj method to redirect this method call back to the master. + +=cut + +sub debugobj { + return shift->schema->storage->debugobj; +} + +=head1 ALSO SEE + +L<http://en.wikipedia.org/wiki/Replicant> =head1 AUTHOR @@ -70,4 +91,4 @@ You may distribute this code under the same terms as Perl itself. =cut -1; \ No newline at end of file +1;