mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 17:10:50 +00:00
Cluster: include node IDs in SLOTS output.
CLUSTER SLOTS now includes IDs in the nodes description associated with a given slot range. Certain client libraries implementations need a way to reference a node in an unique way, so they were relying on CLUSTER NODES, that is not a stable API and may change frequently depending on Redis Cluster future requirements.
This commit is contained in:
parent
8870a7e143
commit
c285862621
@ -3774,8 +3774,10 @@ void clusterReplyMultiBulkSlots(client *c) {
|
|||||||
* 2) end slot
|
* 2) end slot
|
||||||
* 3) 1) master IP
|
* 3) 1) master IP
|
||||||
* 2) master port
|
* 2) master port
|
||||||
|
* 3) node ID
|
||||||
* 4) 1) replica IP
|
* 4) 1) replica IP
|
||||||
* 2) replica port
|
* 2) replica port
|
||||||
|
* 3) node ID
|
||||||
* ... continued until done
|
* ... continued until done
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -3816,18 +3818,20 @@ void clusterReplyMultiBulkSlots(client *c) {
|
|||||||
start = -1;
|
start = -1;
|
||||||
|
|
||||||
/* First node reply position is always the master */
|
/* First node reply position is always the master */
|
||||||
addReplyMultiBulkLen(c, 2);
|
addReplyMultiBulkLen(c, 3);
|
||||||
addReplyBulkCString(c, node->ip);
|
addReplyBulkCString(c, node->ip);
|
||||||
addReplyLongLong(c, node->port);
|
addReplyLongLong(c, node->port);
|
||||||
|
addReplyBulkCBuffer(c, node->name, CLUSTER_NAMELEN);
|
||||||
|
|
||||||
/* Remaining nodes in reply are replicas for slot range */
|
/* Remaining nodes in reply are replicas for slot range */
|
||||||
for (i = 0; i < node->numslaves; i++) {
|
for (i = 0; i < node->numslaves; i++) {
|
||||||
/* This loop is copy/pasted from clusterGenNodeDescription()
|
/* This loop is copy/pasted from clusterGenNodeDescription()
|
||||||
* with modifications for per-slot node aggregation */
|
* with modifications for per-slot node aggregation */
|
||||||
if (nodeFailed(node->slaves[i])) continue;
|
if (nodeFailed(node->slaves[i])) continue;
|
||||||
addReplyMultiBulkLen(c, 2);
|
addReplyMultiBulkLen(c, 3);
|
||||||
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);
|
||||||
nested_elements++;
|
nested_elements++;
|
||||||
}
|
}
|
||||||
setDeferredMultiBulkLength(c, nested_replylen, nested_elements);
|
setDeferredMultiBulkLength(c, nested_replylen, nested_elements);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user