Skip to content

Commit 8d92f7f

Browse files
authored
Support NO ONE block in REPLICAOF command json (redis#12633)
The current commands.json doesn't mention the special NO ONE arguments. This change is also applied to SLAVEOF
1 parent b810384 commit 8d92f7f

File tree

3 files changed

+108
-18
lines changed

3 files changed

+108
-18
lines changed

src/commands.def

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7313,12 +7313,29 @@ struct COMMAND_ARG PSYNC_Args[] = {
73137313
#define REPLICAOF_Keyspecs NULL
73147314
#endif
73157315

7316-
/* REPLICAOF argument table */
7317-
struct COMMAND_ARG REPLICAOF_Args[] = {
7316+
/* REPLICAOF args host_port argument table */
7317+
struct COMMAND_ARG REPLICAOF_args_host_port_Subargs[] = {
73187318
{MAKE_ARG("host",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
73197319
{MAKE_ARG("port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
73207320
};
73217321

7322+
/* REPLICAOF args no_one argument table */
7323+
struct COMMAND_ARG REPLICAOF_args_no_one_Subargs[] = {
7324+
{MAKE_ARG("no",ARG_TYPE_PURE_TOKEN,-1,"NO",NULL,NULL,CMD_ARG_NONE,0,NULL)},
7325+
{MAKE_ARG("one",ARG_TYPE_PURE_TOKEN,-1,"ONE",NULL,NULL,CMD_ARG_NONE,0,NULL)},
7326+
};
7327+
7328+
/* REPLICAOF args argument table */
7329+
struct COMMAND_ARG REPLICAOF_args_Subargs[] = {
7330+
{MAKE_ARG("host-port",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,2,NULL),.subargs=REPLICAOF_args_host_port_Subargs},
7331+
{MAKE_ARG("no-one",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,2,NULL),.subargs=REPLICAOF_args_no_one_Subargs},
7332+
};
7333+
7334+
/* REPLICAOF argument table */
7335+
struct COMMAND_ARG REPLICAOF_Args[] = {
7336+
{MAKE_ARG("args",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,2,NULL),.subargs=REPLICAOF_args_Subargs},
7337+
};
7338+
73227339
/********** RESTORE_ASKING ********************/
73237340

73247341
#ifndef SKIP_CMD_HISTORY_TABLE
@@ -7437,12 +7454,29 @@ struct COMMAND_ARG SHUTDOWN_Args[] = {
74377454
#define SLAVEOF_Keyspecs NULL
74387455
#endif
74397456

7440-
/* SLAVEOF argument table */
7441-
struct COMMAND_ARG SLAVEOF_Args[] = {
7457+
/* SLAVEOF args host_port argument table */
7458+
struct COMMAND_ARG SLAVEOF_args_host_port_Subargs[] = {
74427459
{MAKE_ARG("host",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
74437460
{MAKE_ARG("port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
74447461
};
74457462

7463+
/* SLAVEOF args no_one argument table */
7464+
struct COMMAND_ARG SLAVEOF_args_no_one_Subargs[] = {
7465+
{MAKE_ARG("no",ARG_TYPE_PURE_TOKEN,-1,"NO",NULL,NULL,CMD_ARG_NONE,0,NULL)},
7466+
{MAKE_ARG("one",ARG_TYPE_PURE_TOKEN,-1,"ONE",NULL,NULL,CMD_ARG_NONE,0,NULL)},
7467+
};
7468+
7469+
/* SLAVEOF args argument table */
7470+
struct COMMAND_ARG SLAVEOF_args_Subargs[] = {
7471+
{MAKE_ARG("host-port",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,2,NULL),.subargs=SLAVEOF_args_host_port_Subargs},
7472+
{MAKE_ARG("no-one",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,2,NULL),.subargs=SLAVEOF_args_no_one_Subargs},
7473+
};
7474+
7475+
/* SLAVEOF argument table */
7476+
struct COMMAND_ARG SLAVEOF_Args[] = {
7477+
{MAKE_ARG("args",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,2,NULL),.subargs=SLAVEOF_args_Subargs},
7478+
};
7479+
74467480
/********** SLOWLOG GET ********************/
74477481

74487482
#ifndef SKIP_CMD_HISTORY_TABLE
@@ -10752,12 +10786,12 @@ struct COMMAND_STRUCT redisCommandTable[] = {
1075210786
{MAKE_CMD("monitor","Listens for all requests received by the server in real-time.",NULL,"1.0.0",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,MONITOR_History,0,MONITOR_Tips,0,monitorCommand,1,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0,MONITOR_Keyspecs,0,NULL,0)},
1075310787
{MAKE_CMD("psync","An internal command used in replication.",NULL,"2.8.0",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,PSYNC_History,0,PSYNC_Tips,0,syncCommand,-3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NO_MULTI|CMD_NOSCRIPT,0,PSYNC_Keyspecs,0,NULL,2),.args=PSYNC_Args},
1075410788
{MAKE_CMD("replconf","An internal command for configuring the replication stream.","O(1)","3.0.0",CMD_DOC_SYSCMD,NULL,NULL,"server",COMMAND_GROUP_SERVER,REPLCONF_History,0,REPLCONF_Tips,0,replconfCommand,-1,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_ALLOW_BUSY,0,REPLCONF_Keyspecs,0,NULL,0)},
10755-
{MAKE_CMD("replicaof","Configures a server as replica of another, or promotes it to a master.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,REPLICAOF_History,0,REPLICAOF_Tips,0,replicaofCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_STALE,0,REPLICAOF_Keyspecs,0,NULL,2),.args=REPLICAOF_Args},
10789+
{MAKE_CMD("replicaof","Configures a server as replica of another, or promotes it to a master.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,REPLICAOF_History,0,REPLICAOF_Tips,0,replicaofCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_STALE,0,REPLICAOF_Keyspecs,0,NULL,1),.args=REPLICAOF_Args},
1075610790
{MAKE_CMD("restore-asking","An internal command for migrating keys in a cluster.","O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).","3.0.0",CMD_DOC_SYSCMD,NULL,NULL,"server",COMMAND_GROUP_SERVER,RESTORE_ASKING_History,3,RESTORE_ASKING_Tips,0,restoreCommand,-4,CMD_WRITE|CMD_DENYOOM|CMD_ASKING,ACL_CATEGORY_KEYSPACE|ACL_CATEGORY_DANGEROUS,RESTORE_ASKING_Keyspecs,1,NULL,7),.args=RESTORE_ASKING_Args},
1075710791
{MAKE_CMD("role","Returns the replication role.","O(1)","2.8.12",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,ROLE_History,0,ROLE_Tips,0,roleCommand,1,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_SENTINEL,ACL_CATEGORY_ADMIN|ACL_CATEGORY_DANGEROUS,ROLE_Keyspecs,0,NULL,0)},
1075810792
{MAKE_CMD("save","Synchronously saves the database(s) to disk.","O(N) where N is the total number of keys in all databases","1.0.0",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,SAVE_History,0,SAVE_Tips,0,saveCommand,1,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_NO_MULTI,0,SAVE_Keyspecs,0,NULL,0)},
1075910793
{MAKE_CMD("shutdown","Synchronously saves the database(s) to disk and shuts down the Redis server.","O(N) when saving, where N is the total number of keys in all databases when saving data, otherwise O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,SHUTDOWN_History,1,SHUTDOWN_Tips,0,shutdownCommand,-1,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_NO_MULTI|CMD_SENTINEL|CMD_ALLOW_BUSY,0,SHUTDOWN_Keyspecs,0,NULL,4),.args=SHUTDOWN_Args},
10760-
{MAKE_CMD("slaveof","Sets a Redis server as a replica of another, or promotes it to being a master.","O(1)","1.0.0",CMD_DOC_DEPRECATED,"`REPLICAOF`","5.0.0","server",COMMAND_GROUP_SERVER,SLAVEOF_History,0,SLAVEOF_Tips,0,replicaofCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_STALE,0,SLAVEOF_Keyspecs,0,NULL,2),.args=SLAVEOF_Args},
10794+
{MAKE_CMD("slaveof","Sets a Redis server as a replica of another, or promotes it to being a master.","O(1)","1.0.0",CMD_DOC_DEPRECATED,"`REPLICAOF`","5.0.0","server",COMMAND_GROUP_SERVER,SLAVEOF_History,0,SLAVEOF_Tips,0,replicaofCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_STALE,0,SLAVEOF_Keyspecs,0,NULL,1),.args=SLAVEOF_Args},
1076110795
{MAKE_CMD("slowlog","A container for slow log commands.","Depends on subcommand.","2.2.12",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,SLOWLOG_History,0,SLOWLOG_Tips,0,NULL,-2,0,0,SLOWLOG_Keyspecs,0,NULL,0),.subcommands=SLOWLOG_Subcommands},
1076210796
{MAKE_CMD("swapdb","Swaps two Redis databases.","O(N) where N is the count of clients watching or blocking on keys from both databases.","4.0.0",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,SWAPDB_History,0,SWAPDB_Tips,0,swapdbCommand,3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE|ACL_CATEGORY_DANGEROUS,SWAPDB_Keyspecs,0,NULL,2),.args=SWAPDB_Args},
1076310797
{MAKE_CMD("sync","An internal command used in replication.",NULL,"1.0.0",CMD_DOC_NONE,NULL,NULL,"server",COMMAND_GROUP_SERVER,SYNC_History,0,SYNC_Tips,0,syncCommand,1,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NO_MULTI|CMD_NOSCRIPT,0,SYNC_Keyspecs,0,NULL,0)},

src/commands/replicaof.json

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,40 @@
1414
],
1515
"arguments": [
1616
{
17-
"name": "host",
18-
"type": "string"
19-
},
20-
{
21-
"name": "port",
22-
"type": "integer"
17+
"name": "args",
18+
"type": "oneof",
19+
"arguments": [
20+
{
21+
"name": "host-port",
22+
"type": "block",
23+
"arguments": [
24+
{
25+
"name": "host",
26+
"type": "string"
27+
},
28+
{
29+
"name": "port",
30+
"type": "integer"
31+
}
32+
]
33+
},
34+
{
35+
"name": "no-one",
36+
"type": "block",
37+
"arguments": [
38+
{
39+
"name": "no",
40+
"type": "pure-token",
41+
"token": "NO"
42+
},
43+
{
44+
"name": "one",
45+
"type": "pure-token",
46+
"token": "ONE"
47+
}
48+
]
49+
}
50+
]
2351
}
2452
],
2553
"reply_schema": {

src/commands/slaveof.json

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,40 @@
1919
],
2020
"arguments": [
2121
{
22-
"name": "host",
23-
"type": "string"
24-
},
25-
{
26-
"name": "port",
27-
"type": "integer"
22+
"name": "args",
23+
"type": "oneof",
24+
"arguments": [
25+
{
26+
"name": "host-port",
27+
"type": "block",
28+
"arguments": [
29+
{
30+
"name": "host",
31+
"type": "string"
32+
},
33+
{
34+
"name": "port",
35+
"type": "integer"
36+
}
37+
]
38+
},
39+
{
40+
"name": "no-one",
41+
"type": "block",
42+
"arguments": [
43+
{
44+
"name": "no",
45+
"type": "pure-token",
46+
"token": "NO"
47+
},
48+
{
49+
"name": "one",
50+
"type": "pure-token",
51+
"token": "ONE"
52+
}
53+
]
54+
}
55+
]
2856
}
2957
],
3058
"reply_schema": {

0 commit comments

Comments
 (0)