diff options
author | Ping Xie <pingxie@google.com> | 2022-11-16 19:24:18 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-16 19:24:18 -0800 |
commit | 203b12e41ff7981f0fae5b23819f072d61594813 (patch) | |
tree | ff5f2f829bbfcc6928190a01d401ee4b1ebbaf9e /src/commands.c | |
parent | 2168ccc661791ced6271c5e4ab0f5eb60b1559e2 (diff) | |
download | redis-203b12e41ff7981f0fae5b23819f072d61594813.tar.gz |
Introduce Shard IDs to logically group nodes in cluster mode (#10536)
Introduce Shard IDs to logically group nodes in cluster mode.
1. Added a new "shard_id" field to "cluster nodes" output and nodes.conf after "hostname"
2. Added a new PING extension to propagate "shard_id"
3. Handled upgrade from pre-7.2 releases automatically
4. Refactored PING extension assembling/parsing logic
Behavior of Shard IDs:
Replicas will always follow the shards of their reported primaries. If a primary updates its shard ID, the replica will follow. (This need not follow for cluster v2) This is not an expected use case.
Diffstat (limited to 'src/commands.c')
-rw-r--r-- | src/commands.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/commands.c b/src/commands.c index caf7bda89..7e43b1e6d 100644 --- a/src/commands.c +++ b/src/commands.c @@ -476,6 +476,17 @@ struct redisCommandArg CLUSTER_MEET_Args[] = { /* CLUSTER MYID tips */ #define CLUSTER_MYID_tips NULL +/********** CLUSTER MYSHARDID ********************/ + +/* CLUSTER MYSHARDID history */ +#define CLUSTER_MYSHARDID_History NULL + +/* CLUSTER MYSHARDID tips */ +const char *CLUSTER_MYSHARDID_tips[] = { +"nondeterministic_output", +NULL +}; + /********** CLUSTER NODES ********************/ /* CLUSTER NODES history */ @@ -647,6 +658,7 @@ struct redisCommand CLUSTER_Subcommands[] = { {"links","Returns a list of all TCP links to and from peer nodes in cluster","O(N) where N is the total number of Cluster nodes","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_LINKS_History,CLUSTER_LINKS_tips,clusterCommand,2,CMD_STALE,0}, {"meet","Force a node cluster to handshake with another node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_MEET_History,CLUSTER_MEET_tips,clusterCommand,-4,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_MEET_Args}, {"myid","Return the node id","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_MYID_History,CLUSTER_MYID_tips,clusterCommand,2,CMD_STALE,0}, +{"myshardid","Return the node shard id","O(1)","7.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_MYSHARDID_History,CLUSTER_MYSHARDID_tips,clusterCommand,2,CMD_STALE,0}, {"nodes","Get Cluster config for the node","O(N) where N is the total number of Cluster nodes","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_NODES_History,CLUSTER_NODES_tips,clusterCommand,2,CMD_STALE,0}, {"replicas","List replica nodes of the specified master node","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_REPLICAS_History,CLUSTER_REPLICAS_tips,clusterCommand,3,CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_REPLICAS_Args}, {"replicate","Reconfigure a node as a replica of the specified master node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_REPLICATE_History,CLUSTER_REPLICATE_tips,clusterCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_REPLICATE_Args}, |