From 5b2082ead3489523c336e3047550bad5cad25d98 Mon Sep 17 00:00:00 2001 From: antirez Date: Mon, 10 Feb 2014 17:08:37 +0100 Subject: [PATCH] Cluster: replica migration should only work for masters serving slots. --- src/cluster.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cluster.c b/src/cluster.c index d59b6342..167468dc 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -2264,7 +2264,7 @@ void clusterHandleSlaveMigration(int max_slaves) { if (nodeIsSlave(node) || nodeFailed(node)) continue; okslaves = clusterCountNonFailingSlaves(node); - if (okslaves == 0 && target == NULL) target = node; + if (okslaves == 0 && target == NULL && node->numslots > 0) target = node; if (okslaves == max_slaves) { for (j = 0; j < node->numslaves; j++) { if (memcmp(node->slaves[j]->name, @@ -2487,7 +2487,7 @@ void clusterCron(void) { if (nodeIsSlave(myself) && nodeIsMaster(node) && !nodeFailed(node)) { int okslaves = clusterCountNonFailingSlaves(node); - if (okslaves == 0) orphaned_masters++; + if (okslaves == 0 && node->numslots > 0) orphaned_masters++; if (okslaves > max_slaves) max_slaves = okslaves; if (nodeIsSlave(myself) && myself->slaveof == node) this_slaves = okslaves;