summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cluster.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/cluster.c b/src/cluster.c
index 7affc838e..2677d3503 100644
--- a/src/cluster.c
+++ b/src/cluster.c
@@ -6747,18 +6747,17 @@ clusterNode *getNodeByQuery(client *c, struct redisCommand *cmd, robj **argv, in
} else {
/* If it is not the first key/channel, make sure it is exactly
* the same key/channel as the first we saw. */
- if (!equalStringObjects(firstkey,thiskey)) {
- if (slot != thisslot) {
- /* Error: multiple keys from different slots. */
- getKeysFreeResult(&result);
- if (error_code)
- *error_code = CLUSTER_REDIR_CROSS_SLOT;
- return NULL;
- } else {
- /* Flag this request as one with multiple different
- * keys/channels. */
- multiple_keys = 1;
- }
+ if (slot != thisslot) {
+ /* Error: multiple keys from different slots. */
+ getKeysFreeResult(&result);
+ if (error_code)
+ *error_code = CLUSTER_REDIR_CROSS_SLOT;
+ return NULL;
+ }
+ if (importing_slot && !multiple_keys && !equalStringObjects(firstkey,thiskey)) {
+ /* Flag this request as one with multiple different
+ * keys/channels when the slot is in importing state. */
+ multiple_keys = 1;
}
}