From 4db74afdb26a74eb3a0621ab695e99a0b790727c Mon Sep 17 00:00:00 2001 From: wuranxx Date: Wed, 22 Jan 2025 11:17:13 +0800 Subject: [PATCH] Fix delKeysInSlot does not consider command invoke. Signed-off-by: wuranxx --- src/cluster_legacy.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cluster_legacy.c b/src/cluster_legacy.c index f361c74c22..611633f370 100644 --- a/src/cluster_legacy.c +++ b/src/cluster_legacy.c @@ -6345,6 +6345,7 @@ unsigned int delKeysInSlot(unsigned int hashslot, int lazy) { * state so that we don't assert in propagateNow(). */ server.server_del_keys_in_slot = 1; unsigned int j = 0; + int before_execution_nesting = server.execution_nesting; kvstoreHashtableIterator *kvs_di = NULL; void *next; @@ -6359,6 +6360,7 @@ unsigned int delKeysInSlot(unsigned int hashslot, int lazy) { } else { dbSyncDelete(&server.db[0], key); } + dbDelete(&server.db[0], key); propagateDeletion(&server.db[0], key, lazy); signalModifiedKey(NULL, &server.db[0], key); /* The keys are not actually logically deleted from the database, just moved to another node. @@ -6374,7 +6376,7 @@ unsigned int delKeysInSlot(unsigned int hashslot, int lazy) { kvstoreReleaseHashtableIterator(kvs_di); server.server_del_keys_in_slot = 0; - serverAssert(server.execution_nesting == 0); + serverAssert(server.execution_nesting == before_execution_nesting); return j; }