diff --git a/src/cluster.c b/src/cluster.c index 6b34b72c2..a752ad1bf 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -2411,7 +2411,6 @@ void clusterUpdateSlotsConfigWith(clusterNode *sender, uint64_t senderConfigEpoc } clusterDelSlot(j); clusterAddSlot(sender,j); - bitmapClearBit(server.cluster->owner_not_claiming_slot, j); clusterDoBeforeSleep(CLUSTER_TODO_SAVE_CONFIG| CLUSTER_TODO_UPDATE_STATE| CLUSTER_TODO_FSYNC_CONFIG); @@ -4942,6 +4941,8 @@ int clusterDelSlot(int slot) { /* Clear the slot bit. */ serverAssert(clusterNodeClearSlotBit(n,slot) == 1); server.cluster->slots[slot] = NULL; + /* Make owner_not_claiming_slot flag consistent with slot ownership information. */ + bitmapClearBit(server.cluster->owner_not_claiming_slot, slot); return C_OK; }