From 2e8e0ad44e92965878ac4196e5603701a8850be5 Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 11 Mar 2014 11:16:18 +0100 Subject: [PATCH] Cluster: clusterCloseAllSlots() added. --- src/cluster.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/cluster.c b/src/cluster.c index 59a71180..b9737490 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -68,6 +68,7 @@ int bitmapTestBit(unsigned char *bitmap, int pos); void clusterDoBeforeSleep(int flags); void clusterSendUpdate(clusterLink *link, clusterNode *node); void resetManualFailover(void); +void clusterCloseAllSlots(void); /* ----------------------------------------------------------------------------- * Initialization @@ -309,12 +310,8 @@ void clusterInit(void) { server.cluster->last_vote_epoch = 0; server.cluster->stats_bus_messages_sent = 0; server.cluster->stats_bus_messages_received = 0; - memset(server.cluster->migrating_slots_to,0, - sizeof(server.cluster->migrating_slots_to)); - memset(server.cluster->importing_slots_from,0, - sizeof(server.cluster->importing_slots_from)); - memset(server.cluster->slots,0, - sizeof(server.cluster->slots)); + memset(server.cluster->slots,0, sizeof(server.cluster->slots)); + clusterCloseAllSlots(); if (clusterLoadConfig(server.cluster_configfile) == REDIS_ERR) { /* No configuration found. We will just use the random name provided * by the createClusterNode() function. */ @@ -2716,6 +2713,15 @@ int clusterDelNodeSlots(clusterNode *node) { return deleted; } +/* Clear the migrating / importing state for all the slots. + * This is useful at initialization and when turning a master into slave. */ +void clusterCloseAllSlots(void) { + memset(server.cluster->migrating_slots_to,0, + sizeof(server.cluster->migrating_slots_to)); + memset(server.cluster->importing_slots_from,0, + sizeof(server.cluster->importing_slots_from)); +} + /* ----------------------------------------------------------------------------- * Cluster state evaluation function * -------------------------------------------------------------------------- */