Skip to content

Commit 77b4103

Browse files
committed
extern: add 0008-slots_async6_select.patch
1 parent 88b32ba commit 77b4103

File tree

1 file changed

+189
-0
lines changed

1 file changed

+189
-0
lines changed
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
From 88b32ba356cb52971fd0da00b7d610266913d71f Mon Sep 17 00:00:00 2001
2+
From: spinlock <[email protected]>
3+
Date: Wed, 10 May 2017 13:29:12 +0800
4+
Subject: [PATCH] extern: new command SLOTSRESTORE-ASYNC-SELECT
5+
6+
---
7+
extern/redis-3.2.8/src/help.h | 4 +--
8+
extern/redis-3.2.8/src/server.c | 15 +++++-----
9+
extern/redis-3.2.8/src/server.h | 1 +
10+
extern/redis-3.2.8/src/slots_async.c | 54 ++++++++++++++++++------------------
11+
4 files changed, 38 insertions(+), 36 deletions(-)
12+
13+
diff --git a/extern/redis-3.2.8/src/help.h b/extern/redis-3.2.8/src/help.h
14+
index f4ffcb9..32810e1 100644
15+
--- a/extern/redis-3.2.8/src/help.h
16+
+++ b/extern/redis-3.2.8/src/help.h
17+
@@ -1093,11 +1093,11 @@ struct commandHelp {
18+
"hashkey command [arg ...]",
19+
"", 14, "codis3.2"
20+
},
21+
- {"SLOTSRESTORE-ASYNC SELECT",
22+
+ {"SLOTSRESTORE-ASYNC-SELECT",
23+
"db",
24+
"", 14, "codis3.2"
25+
},
26+
- {"SLOTSRESTORE-ASYNC DEL",
27+
+ {"SLOTSRESTORE-ASYNC DELETE",
28+
"key",
29+
"", 14, "codis3.2"
30+
},
31+
diff --git a/extern/redis-3.2.8/src/server.c b/extern/redis-3.2.8/src/server.c
32+
index 4e2abbe..9b7e6a4 100644
33+
--- a/extern/redis-3.2.8/src/server.c
34+
+++ b/extern/redis-3.2.8/src/server.c
35+
@@ -307,18 +307,19 @@ struct redisCommand redisCommandTable[] = {
36+
{"slotshashkey",slotshashkeyCommand,-1,"rF",0,NULL,0,0,0,0,0},
37+
{"slotscheck",slotscheckCommand,0,"r",0,NULL,0,0,0,0,0},
38+
{"slotsrestore",slotsrestoreCommand,-4,"wm",0,NULL,0,0,0,0,0},
39+
- {"slotsmgrtslot-async",slotsmgrtSlotAsyncCommand,8,"w",0,NULL,0,0,0,0,0},
40+
- {"slotsmgrttagslot-async",slotsmgrtTagSlotAsyncCommand,8,"w",0,NULL,0,0,0,0,0},
41+
- {"slotsmgrtone-async",slotsmgrtOneAsyncCommand,-7,"w",0,NULL,0,0,0,0,0},
42+
- {"slotsmgrttagone-async",slotsmgrtTagOneAsyncCommand,-7,"w",0,NULL,0,0,0,0,0},
43+
+ {"slotsmgrtslot-async",slotsmgrtSlotAsyncCommand,8,"ws",0,NULL,0,0,0,0,0},
44+
+ {"slotsmgrttagslot-async",slotsmgrtTagSlotAsyncCommand,8,"ws",0,NULL,0,0,0,0,0},
45+
+ {"slotsmgrtone-async",slotsmgrtOneAsyncCommand,-7,"ws",0,NULL,0,0,0,0,0},
46+
+ {"slotsmgrttagone-async",slotsmgrtTagOneAsyncCommand,-7,"ws",0,NULL,0,0,0,0,0},
47+
{"slotsmgrtone-async-dump",slotsmgrtOneAsyncDumpCommand,-4,"rm",0,NULL,0,0,0,0,0},
48+
{"slotsmgrttagone-async-dump",slotsmgrtTagOneAsyncDumpCommand,-4,"rm",0,NULL,0,0,0,0,0},
49+
- {"slotsmgrt-async-fence",slotsmgrtAsyncFenceCommand,0,"r",0,NULL,0,0,0,0,0},
50+
+ {"slotsmgrt-async-fence",slotsmgrtAsyncFenceCommand,0,"rs",0,NULL,0,0,0,0,0},
51+
{"slotsmgrt-async-cancel",slotsmgrtAsyncCancelCommand,0,"F",0,NULL,0,0,0,0,0},
52+
{"slotsmgrt-async-status",slotsmgrtAsyncStatusCommand,0,"F",0,NULL,0,0,0,0,0},
53+
{"slotsmgrt-exec-wrapper",slotsmgrtExecWrapperCommand,-3,"wm",0,NULL,0,0,0,0,0},
54+
- {"slotsrestore-async",slotsrestoreAsyncCommand,-2,"w",0,NULL,0,0,0,0,0},
55+
- {"slotsrestore-async-auth",slotsrestoreAsyncAuthCommand,2,"F",0,NULL,0,0,0,0,0},
56+
+ {"slotsrestore-async",slotsrestoreAsyncCommand,-2,"wm",0,NULL,0,0,0,0,0},
57+
+ {"slotsrestore-async-auth",slotsrestoreAsyncAuthCommand,2,"sltF",0,NULL,0,0,0,0,0},
58+
+ {"slotsrestore-async-select",slotsrestoreAsyncSelectCommand,2,"lF",0,NULL,0,0,0,0,0},
59+
{"slotsrestore-async-ack",slotsrestoreAsyncAckCommand,3,"w",0,NULL,0,0,0,0,0},
60+
};
61+
62+
diff --git a/extern/redis-3.2.8/src/server.h b/extern/redis-3.2.8/src/server.h
63+
index f7a4d50..291aec0 100644
64+
--- a/extern/redis-3.2.8/src/server.h
65+
+++ b/extern/redis-3.2.8/src/server.h
66+
@@ -1707,6 +1707,7 @@ void slotsmgrtAsyncStatusCommand(client *c);
67+
void slotsmgrtExecWrapperCommand(client *c);
68+
void slotsrestoreAsyncCommand(client *c);
69+
void slotsrestoreAsyncAuthCommand(client *c);
70+
+void slotsrestoreAsyncSelectCommand(client *c);
71+
void slotsrestoreAsyncAckCommand(client *c);
72+
73+
void slotsmgrtAsyncCleanup();
74+
diff --git a/extern/redis-3.2.8/src/slots_async.c b/extern/redis-3.2.8/src/slots_async.c
75+
index c506942..71558aa 100644
76+
--- a/extern/redis-3.2.8/src/slots_async.c
77+
+++ b/extern/redis-3.2.8/src/slots_async.c
78+
@@ -260,20 +260,19 @@ singleObjectIteratorNext(client *c, singleObjectIterator *it,
79+
leading_msgs += 1;
80+
}
81+
do {
82+
- /* SLOTSRESTORE-ASYNC select $db */
83+
- addReplyMultiBulkLen(c, 3);
84+
- addReplyBulkCString(c, "SLOTSRESTORE-ASYNC");
85+
- addReplyBulkCString(c, "select");
86+
+ /* SLOTSRESTORE-ASYNC-SELECT $db */
87+
+ addReplyMultiBulkLen(c, 2);
88+
+ addReplyBulkCString(c, "SLOTSRESTORE-ASYNC-SELECT");
89+
addReplyBulkLongLong(c, c->db->id);
90+
leading_msgs += 1;
91+
} while (0);
92+
}
93+
}
94+
95+
- /* SLOTSRESTORE-ASYNC del $key */
96+
+ /* SLOTSRESTORE-ASYNC delete $key */
97+
addReplyMultiBulkLen(c, 3);
98+
addReplyBulkCString(c, "SLOTSRESTORE-ASYNC");
99+
- addReplyBulkCString(c, "del");
100+
+ addReplyBulkCString(c, "delete");
101+
addReplyBulk(c, key);
102+
103+
long n = numberOfRestoreCommandsFromObject(val, maxbulks);
104+
@@ -1306,7 +1305,7 @@ slotsmgrtExecWrapperCommand(client *c) {
105+
/* ============================ SlotsrestoreAsync Commands ================================= */
106+
107+
static void
108+
-slotsrestoreReplyAck(client *c, int errcode, const char *fmt, ...) {
109+
+slotsrestoreReplyAck(client *c, int err_code, const char *fmt, ...) {
110+
va_list ap;
111+
va_start(ap, fmt);
112+
sds s = sdscatvprintf(sdsempty(), fmt, ap);
113+
@@ -1314,8 +1313,12 @@ slotsrestoreReplyAck(client *c, int errcode, const char *fmt, ...) {
114+
115+
addReplyMultiBulkLen(c, 3);
116+
addReplyBulkCString(c, "SLOTSRESTORE-ASYNC-ACK");
117+
- addReplyBulkLongLong(c, errcode);
118+
+ addReplyBulkLongLong(c, err_code);
119+
addReplyBulkSds(c, s);
120+
+
121+
+ if (err_code != 0) {
122+
+ c->flags |= CLIENT_CLOSE_AFTER_REPLY;
123+
+ }
124+
}
125+
126+
extern int verifyDumpPayload(unsigned char *p, size_t len);
127+
@@ -1333,21 +1336,6 @@ slotsrestoreAsyncHandle(client *c) {
128+
}
129+
cmd = c->argv[1]->ptr;
130+
131+
- /* SLOTSRESTORE-ASYNC select $db */
132+
- if (!strcasecmp(cmd, "select")) {
133+
- long long db;
134+
- if (c->argc != 3) {
135+
- goto bad_arguments_number;
136+
- }
137+
- if (getLongLongFromObject(c->argv[2], &db) != C_OK ||
138+
- !(db >= 0 && db <= INT_MAX) || selectDb(c, db) != C_OK) {
139+
- slotsrestoreReplyAck(c, -1, "invalid DB index (DB=%s)", c->argv[2]->ptr);
140+
- return C_ERR;
141+
- }
142+
- slotsrestoreReplyAck(c, 0, "%d", c->db->id);
143+
- return C_OK;
144+
- }
145+
-
146+
/* ==================================================== */
147+
/* SLOTSRESTORE-ASYNC $cmd $key [$ttl $arg1, $arg2 ...] */
148+
/* ==================================================== */
149+
@@ -1358,8 +1346,8 @@ slotsrestoreAsyncHandle(client *c) {
150+
151+
robj *key = c->argv[2];
152+
153+
- /* SLOTSRESTORE-ASYNC del $key */
154+
- if (!strcasecmp(cmd, "del")) {
155+
+ /* SLOTSRESTORE-ASYNC delete $key */
156+
+ if (!strcasecmp(cmd, "delete")) {
157+
if (c->argc != 3) {
158+
goto bad_arguments_number;
159+
}
160+
@@ -1635,8 +1623,7 @@ success_common:
161+
162+
163+
/* *
164+
- * SLOTSRESTORE-ASYNC select $db
165+
- * del $key
166+
+ * SLOTSRESTORE-ASYNC delete $key
167+
* expire $key $ttl
168+
* object $key $ttl $payload
169+
* string $key $ttl $payload
170+
@@ -1768,3 +1755,16 @@ slotsrestoreAsyncAuthCommand(client *c) {
171+
}
172+
}
173+
174+
+/* *
175+
+ * SLOTSRESTORE-ASYNC-SELECT $db
176+
+ * */
177+
+void
178+
+slotsrestoreAsyncSelectCommand(client *c) {
179+
+ long long db;
180+
+ if (getLongLongFromObject(c->argv[1], &db) != C_OK ||
181+
+ !(db >= 0 && db <= INT_MAX) || selectDb(c, db) != C_OK) {
182+
+ slotsrestoreReplyAck(c, -1, "invalid DB index (%s)", c->argv[1]->ptr);
183+
+ } else {
184+
+ slotsrestoreReplyAck(c, 0, "OK");
185+
+ }
186+
+}
187+
--
188+
2.12.2
189+

0 commit comments

Comments
 (0)