Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f2bfd72

Browse files
mariusadammichael-grunder
authored andcommitted
Issue #2080: avoid registering the same replicas multiple times in case the master handles multiple slot ranges
1 parent 130b5d0 commit f2bfd72

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

cluster_library.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -709,25 +709,25 @@ static int cluster_map_slots(redisCluster *c, clusterReply *r) {
709709
if ((pnode = zend_hash_str_find_ptr(c->nodes, key, klen)) == NULL) {
710710
master = cluster_node_create(c, host, hlen, port, low, 0);
711711
zend_hash_str_update_ptr(c->nodes, key, klen, master);
712-
} else {
713-
master = pnode;
714-
}
715712

716-
// Attach slaves
717-
for (j = 3; j< r2->elements; j++) {
718-
r3 = r2->element[j];
719-
if (!VALIDATE_SLOTS_INNER(r3)) {
720-
return -1;
721-
}
713+
// Attach slaves first time we encounter a given master in order to avoid regitering the slaves multiple times
714+
for (j = 3; j< r2->elements; j++) {
715+
r3 = r2->element[j];
716+
if (!VALIDATE_SLOTS_INNER(r3)) {
717+
return -1;
718+
}
722719

723-
// Skip slaves where the host is ""
724-
if (r3->element[0]->len == 0) continue;
720+
// Skip slaves where the host is ""
721+
if (r3->element[0]->len == 0) continue;
725722

726-
// Attach this node to our slave
727-
slave = cluster_node_create(c, r3->element[0]->str,
728-
(int)r3->element[0]->len,
729-
(unsigned short)r3->element[1]->integer, low, 1);
730-
cluster_node_add_slave(master, slave);
723+
// Attach this node to our slave
724+
slave = cluster_node_create(c, r3->element[0]->str,
725+
(int)r3->element[0]->len,
726+
(unsigned short)r3->element[1]->integer, low, 1);
727+
cluster_node_add_slave(master, slave);
728+
}
729+
} else {
730+
master = pnode;
731731
}
732732

733733
// Attach this node to each slot in the range

0 commit comments

Comments
 (0)