From f0b807cd475151bcd67a10c8e7906e88f46a28de Mon Sep 17 00:00:00 2001 From: antirez Date: Thu, 7 Mar 2013 15:40:53 +0100 Subject: [PATCH] Cluster: update cluster state on PFAIL flag set/cleared on nodes. --- src/cluster.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cluster.c b/src/cluster.c index 3b0c1014..3bf78a9e 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -1250,7 +1250,7 @@ void clusterPropagatePublish(robj *channel, robj *message) { void clusterCron(void) { dictIterator *di; dictEntry *de; - int j; + int j, update_state = 0; time_t min_ping_sent = 0; clusterNode *min_ping_node = NULL; @@ -1348,6 +1348,7 @@ void clusterCron(void) { * conditions detected by clearNodeFailureIfNeeded(). */ if (node->flags & REDIS_NODE_PFAIL) { node->flags &= ~REDIS_NODE_PFAIL; + update_state = 1; } else if (node->flags & REDIS_NODE_FAIL) { clearNodeFailureIfNeeded(node); } @@ -1358,6 +1359,7 @@ void clusterCron(void) { redisLog(REDIS_DEBUG,"*** NODE %.40s possibly failing", node->name); node->flags |= REDIS_NODE_PFAIL; + update_state = 1; } } } @@ -1374,6 +1376,8 @@ void clusterCron(void) { replicationSetMaster(server.cluster->myself->slaveof->ip, server.cluster->myself->slaveof->port); } + + if (update_state) clusterUpdateState(); } /* -----------------------------------------------------------------------------