From 7d8911d22a588c78098e2df080d954cc889d5529 Mon Sep 17 00:00:00 2001 From: judeng Date: Fri, 5 Aug 2022 11:42:56 +0800 Subject: Optimize the performance of multi-key commands in cluster mode (#11044) * Optimize the performance of multi-key commands in cluster mode * add note --- src/cluster.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'src/cluster.c') 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; } } -- cgit v1.2.1