X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated%2FBalancer.pm;h=82d3b6ae6fa45099e58ae95525a00a28e8184946;hb=8273e845426f0187b4ad6c4a1b42286fa09a648f;hp=7b579726157234f024f96bc9017c9564f8bdee9f;hpb=f92a9d790b900dcb183ff62b4e2e770a53f01ac6;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm b/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm index 7b57972..82d3b6a 100644 --- a/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm +++ b/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm @@ -9,7 +9,7 @@ use namespace::clean -except => 'meta'; =head1 NAME -DBIx::Class::Storage::DBI::Replicated::Balancer - A Software Load Balancer +DBIx::Class::Storage::DBI::Replicated::Balancer - A Software Load Balancer =head1 SYNOPSIS @@ -71,7 +71,7 @@ has 'pool' => ( Replicant storages (slaves) handle all read only traffic. The assumption is that your database will become readbound well before it becomes write bound -and that being able to spread your read only traffic around to multiple +and that being able to spread your read only traffic around to multiple databases is going to help you to scale traffic. This attribute returns the next slave to handle a read request. Your L @@ -111,8 +111,8 @@ sub _build_current_replicant { This method should be defined in the class which consumes this role. Given a pool object, return the next replicant that will serve queries. The -default behavior is to grab the first replicant it finds but you can write -your own subclasses of L to +default behavior is to grab the first replicant it finds but you can write +your own subclasses of L to support other balance systems. This returns from the pool of active replicants. If there are no active @@ -136,9 +136,9 @@ around 'next_storage' => sub { ## Do we need to validate the replicants? if( - $self->has_auto_validate_every && + $self->has_auto_validate_every && ($self->auto_validate_every + $self->pool->last_validated) <= $now - ) { + ) { $self->pool->validate_replicants; } @@ -180,7 +180,7 @@ around 'select' => sub { if (my $forced_pool = $args[-1]->{force_pool}) { delete $args[-1]->{force_pool}; - return $self->_get_forced_pool($forced_pool)->select(@args); + return $self->_get_forced_pool($forced_pool)->select(@args); } elsif($self->master->{transaction_depth}) { return $self->master->select(@args); } else { @@ -202,7 +202,7 @@ around 'select_single' => sub { if (my $forced_pool = $args[-1]->{force_pool}) { delete $args[-1]->{force_pool}; - return $self->_get_forced_pool($forced_pool)->select_single(@args); + return $self->_get_forced_pool($forced_pool)->select_single(@args); } elsif($self->master->{transaction_depth}) { return $self->master->select_single(@args); } else { @@ -240,7 +240,7 @@ sub _get_forced_pool { return $replicant; } else { $self->master->throw_exception("$forced_pool is not a named replicant."); - } + } } =head1 AUTHOR