Skip to content

Commit 5ded015

Browse files
committed
Better management of Redis connections in CombinedStore to don't break the script when a Redis is down
1 parent b98df6b commit 5ded015

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

cli.php

+28-15
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,43 @@
2020

2121
$app = new LockApplication();
2222

23-
$redisConn = new \Predis\Client(
24-
'tcp://redis:6379'
25-
);
23+
$redisConns = [];
24+
$redisStores = [];
2625

27-
$redisConn2 = new \Predis\Client(
28-
'tcp://redis2:6379'
29-
);
26+
$redisConn = new \Predis\Client('tcp://redis:6379');
27+
try {
28+
$redisConn->connect();
29+
$redisStores[] = new RedisStore($redisConn);
30+
} catch (\Exception $e) {}
31+
32+
$redisConn2 = new \Predis\Client('tcp://redis2:6379');
33+
try {
34+
$redisConn2->connect();
35+
$redisStores[] = new RedisStore($redisConn2);
36+
} catch (\Exception $e) {}
37+
38+
$redisConn3 = new \Predis\Client('tcp://redis3:6379');
39+
try {
40+
$redisConn3->connect();
41+
$redisStores[] = new RedisStore($redisConn3);
42+
} catch (\Exception $e) {}
3043

31-
$redisConn3 = new \Predis\Client(
32-
'tcp://redis3:6379'
33-
);
3444

3545
$memcachedConn = new \Memcached;
3646
$memcachedConn->addServer('memcached', 11211);
3747

3848
$app->addStore('flock', new FlockStore(sys_get_temp_dir()));
3949
$app->addStore('semaphore', new SemaphoreStore());
40-
$app->addStore('redis', new RetryTillSaveStore(new RedisStore($redisConn)));
50+
51+
$app->addStore('redis', new RetryTillSaveStore(
52+
new RedisStore($redisConn)
53+
));
54+
4155
$app->addStore('memcached', new RetryTillSaveStore(new MemcachedStore($memcachedConn)));
42-
$app->addStore('combined', new RetryTillSaveStore(new CombinedStore([
43-
new RedisStore($redisConn),
44-
new RedisStore($redisConn2),
45-
new RedisStore($redisConn3)
46-
], new ConsensusStrategy())));
56+
$app->addStore('combined', new RetryTillSaveStore(new CombinedStore(
57+
$redisStores,
58+
new ConsensusStrategy())
59+
));
4760

4861
$app->command('resource:reset [resource]', function ($output, $factory, $input) {
4962
$resourceName = $input->getArgument('resource');

0 commit comments

Comments
 (0)