Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichael-grunder <michael.grunder@gmail.com>2014-02-21 18:12:32 +0400
committermichael-grunder <michael.grunder@gmail.com>2014-02-21 18:12:32 +0400
commit9eaf14756b37d6b63567070385da2b304ed4bd70 (patch)
treee52ab4e66278f5737b3ffef37665b071c2c65f66
parent43b35a4737d3582481ff85b6506f711f8383c723 (diff)
Don't attempt MGET on nodes where no keys resolve
The MGET call in RedisArray was failing under circumstances where none of the passed keys hashed into any given node in the ring. What was happening is that RedisArray was passing through to the phpredis MGET command an empty array, which was returning false. This in turn caused RedisArray to abort the process and return false as well. This change updates RedisArray MGET such that if a given node doesn't have any keys, we skip the call to it all together. Addresses #435 Addresses #436
-rw-r--r--redis_array.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/redis_array.c b/redis_array.c
index ecc158ea..2c431424 100644
--- a/redis_array.c
+++ b/redis_array.c
@@ -876,7 +876,10 @@ PHP_METHOD(RedisArray, mget)
/* calls */
for(n = 0; n < ra->count; ++n) { /* for each node */
- /* copy args for MGET call on node. */
+ /* We don't even need to make a call to this node if no keys go there */
+ if(!argc_each[n]) continue;
+
+ /* copy args for MGET call on node. */
MAKE_STD_ZVAL(z_argarray);
array_init(z_argarray);