From da852aa8b178586f37a15f4295e15b2d3b939cd3 Mon Sep 17 00:00:00 2001 From: artix Date: Wed, 20 Feb 2019 15:36:12 +0100 Subject: [PATCH] Cluster Manager: fix replica assigment anti-affinity (create) Fix issue #5849 --- src/redis-cli.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/redis-cli.c b/src/redis-cli.c index 93290e5ed..1203c2eff 100644 --- a/src/redis-cli.c +++ b/src/redis-cli.c @@ -4918,6 +4918,12 @@ static int clusterManagerCommandCreate(int argc, char **argv) { cursor += slots_per_node; } + /* Rotating the list sometimes helps to get better initial + * anti-affinity before the optimizer runs. */ + clusterManagerNode *first_node = interleaved[0]; + for (i = 0; i < (interleaved_len - 1); i++) + interleaved[i] = interleaved[i + 1]; + interleaved[interleaved_len - 1] = first_node; int assign_unused = 0, available_count = interleaved_len; assign_replicas: for (i = 0; i < masters_count; i++) {