AnyEvent-Redis-Federated
view release on metacpan or search on metacpan
lib/AnyEvent/Redis/Federated.pm view on Meta::CPAN
use constant MAX_HOST_RETRIES => 3; # how many in a row before we pass
use constant BASE_RETRY_INTERVAL => 2; # in seconds
use constant RETRY_INTERVAL_MULT => 2; # multiply this much each retry fail
use constant MAX_RETRY_INTERVAL => 600; # no more than this long
use constant DEFAULT_WEIGHT => 10; # for consistent hashing
use constant COMMAND_TIMEOUT => 1; # used in poll()
use constant QUERY_ALL => 0; # don't query all addresses by default
my %defaults = (
command_timeout => COMMAND_TIMEOUT,
max_host_retries => MAX_HOST_RETRIES,
base_retry_interval => BASE_RETRY_INTERVAL,
retry_interval_mult => RETRY_INTERVAL_MULT,
max_retry_interval => MAX_RETRY_INTERVAL,
query_all => QUERY_ALL,
quiet => $ENV{QUIET},
);
sub new {
my $class = shift;
lib/AnyEvent/Redis/Federated.pm view on Meta::CPAN
sub DESTROY {
}
sub _hash {
return unpack("N", md5(shift));
}
sub commandTimeout {
my ($self, $time) = @_;
if (defined $time) {
$self->{command_timeout} = $time;
}
return $self->{command_timeout};
}
sub queryAll {
my ($self, $val) = @_;
if (defined $val) {
$self->{query_all} = $val;
}
return $self->{query_all};
}
lib/AnyEvent/Redis/Federated.pm view on Meta::CPAN
}
return $self;
}
}
sub poll {
my ($self) = @_;
#return if $self->{pending_requests} < 1;
return if not defined $self->{cv};
my $rid = $self->{request_serial};
my $timeout = $self->{command_timeout};
my $w;
if ($timeout) {
$w = AnyEvent->signal(signal => "ALRM", cb => sub {
warn "AnyEvent::Redis::Federated::poll alarm timeout! ($rid)\n" if $self->{debug};
# check the state of requests, marking remaining as cancelled
while (my ($rid, $state) = each %{$self->{request_state}}) {
if ($self->{request_state}->{$rid}) {
print "found pending request to cancel: $rid\n" if $self->{debug};
( run in 0.225 second using v1.01-cache-2.11-cpan-a5abf4f5562 )