mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 08:38:27 -05:00
optimize the output of cluster slots
This commit is contained in:
parent
c49fb47fbe
commit
92974f9a98
@ -4191,11 +4191,17 @@ void clusterReplyMultiBulkSlots(client *c) {
|
|||||||
while((de = dictNext(di)) != NULL) {
|
while((de = dictNext(di)) != NULL) {
|
||||||
clusterNode *node = dictGetVal(de);
|
clusterNode *node = dictGetVal(de);
|
||||||
int j = 0, start = -1;
|
int j = 0, start = -1;
|
||||||
|
int i, nested_elements = 0;
|
||||||
|
|
||||||
/* Skip slaves (that are iterated when producing the output of their
|
/* Skip slaves (that are iterated when producing the output of their
|
||||||
* master) and masters not serving any slot. */
|
* master) and masters not serving any slot. */
|
||||||
if (!nodeIsMaster(node) || node->numslots == 0) continue;
|
if (!nodeIsMaster(node) || node->numslots == 0) continue;
|
||||||
|
|
||||||
|
for(i = 0; i < node->numslaves; i++) {
|
||||||
|
if (nodeFailed(node->slaves[i])) continue;
|
||||||
|
nested_elements++;
|
||||||
|
}
|
||||||
|
|
||||||
for (j = 0; j < CLUSTER_SLOTS; j++) {
|
for (j = 0; j < CLUSTER_SLOTS; j++) {
|
||||||
int bit, i;
|
int bit, i;
|
||||||
|
|
||||||
@ -4203,8 +4209,7 @@ void clusterReplyMultiBulkSlots(client *c) {
|
|||||||
if (start == -1) start = j;
|
if (start == -1) start = j;
|
||||||
}
|
}
|
||||||
if (start != -1 && (!bit || j == CLUSTER_SLOTS-1)) {
|
if (start != -1 && (!bit || j == CLUSTER_SLOTS-1)) {
|
||||||
int nested_elements = 3; /* slots (2) + master addr (1). */
|
addReplyArrayLen(c, nested_elements + 3); /* slots (2) + master addr (1). */
|
||||||
void *nested_replylen = addReplyDeferredLen(c);
|
|
||||||
|
|
||||||
if (bit && j == CLUSTER_SLOTS-1) j++;
|
if (bit && j == CLUSTER_SLOTS-1) j++;
|
||||||
|
|
||||||
@ -4234,9 +4239,7 @@ void clusterReplyMultiBulkSlots(client *c) {
|
|||||||
addReplyBulkCString(c, node->slaves[i]->ip);
|
addReplyBulkCString(c, node->slaves[i]->ip);
|
||||||
addReplyLongLong(c, node->slaves[i]->port);
|
addReplyLongLong(c, node->slaves[i]->port);
|
||||||
addReplyBulkCBuffer(c, node->slaves[i]->name, CLUSTER_NAMELEN);
|
addReplyBulkCBuffer(c, node->slaves[i]->name, CLUSTER_NAMELEN);
|
||||||
nested_elements++;
|
|
||||||
}
|
}
|
||||||
setDeferredArrayLen(c, nested_replylen, nested_elements);
|
|
||||||
num_masters++;
|
num_masters++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user