CC: | igor.bujna [...] post.cz |
Hi,
I have installation of 2 memcached servers in version 1.5.3 and for client I use latest Cache-Memcached-Fast package in version 0.25.
Problem is when one of this server fail so Cache-Memcached-Fast method add() fail too.
I test option 'max_failures' and 'failure_timeout' and still it fail.
In test file exists 2 memcached servers on other ports. When I start only one memcached server like 'memcached -d -P memcached.pid -l 127.0.0.1 -m 8' and other memcached server on port 11212 isn't started, about 50% of methods fail.
When I try to discover where is problem, so bad server with port 11212 in method src/client.c:client_mark_failed() is properly mark as fail. But in method src/client.c:client_execute() still use bad server from array and fail on is_active(state) method.
Regards Igor
Subject: | fail_memcached.pl |
use strict;
use Time::HiRes;
use Cache::Memcached::Fast;
my $param = {
'failure_timeout' => 3000,
'max_failures' => 3,
'servers' => ['127.0.0.1:11211', '127.0.0.1::11212',],
'compress_threshold' => 10000
};
my $count = 100;
my $fail = 0;
for (my $i = 0; $i < $count; $i++) {
my $conn = Cache::Memcached::Fast->new($param);
$conn->namespace("_testing:");
my $ret = $conn->add("Testing->Cache::Memcached::Fast->add_method_$i:" . time, 1, 2);
print "Test $i => $ret\n";
$fail++ unless $ret;
Time::HiRes::sleep(0.1);
}
print "Fail $fail from $count : " . (($fail / $count) * 100.0) . "%\n";