diff options
author | antirez <antirez@gmail.com> | 2014-03-07 16:18:00 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2014-03-07 16:18:00 +0100 |
commit | 6984692060106de666ee89d092163075282c6498 (patch) | |
tree | 9c774f5145a4cb10819b837c9e5d0e38f0cdb6dc | |
parent | 36676c23186617ff096d534c6faa353829c4e437 (diff) | |
download | redis-6984692060106de666ee89d092163075282c6498.tar.gz |
Cluster: fix conditional generating TRYAGAIN error.
-rw-r--r-- | src/cluster.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/cluster.c b/src/cluster.c index 0edfe0e27..c99f1fa8e 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -3939,13 +3939,14 @@ clusterNode *getNodeByQuery(redisClient *c, struct redisCommand *cmd, robj **arg return server.cluster->migrating_slots_to[slot]; } - /* If we are receiving the slot, we have all the keys, and the client - * correctly flagged the request as "ASKING", we can serve - * the request, otherwise the only option is to send a TRYAGAIN error. */ + /* If we are receiving the slot, and the client correctly flagged the + * request as "ASKING", we can serve the request. However if the request + * involves multiple keys and we don't have them all, the only option is + * to send a TRYAGAIN error. */ if (importing_slot && (c->flags & REDIS_ASKING || cmd->flags & REDIS_CMD_ASKING)) { - if (missing_keys) { + if (multiple_keys && missing_keys) { if (error_code) *error_code = REDIS_CLUSTER_REDIR_UNSTABLE; return NULL; } else { |