Skip to content

Commit 6babded

Browse files
RESP3 support for monitor command
Signed-off-by: KowalczykBartek <[email protected]>
1 parent 3eb8314 commit 6babded

File tree

4 files changed

+24
-2
lines changed

4 files changed

+24
-2
lines changed

src/replication.c

+8-1
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,14 @@ void replicationFeedMonitors(client *c, list *monitors, int dictid, robj **argv,
704704
listRewind(monitors, &li);
705705
while ((ln = listNext(&li))) {
706706
client *monitor = ln->value;
707-
addReply(monitor, cmdobj);
707+
if(monitor->resp > 2) {
708+
monitor->flag.pushing = 1;
709+
addReplyPushLen(monitor,2);
710+
addReply(monitor,shared.monitorbulk);
711+
addReply(monitor,cmdobj);
712+
} else {
713+
addReply(monitor,cmdobj);
714+
}
708715
updateClientMemUsageAndBucket(monitor);
709716
}
710717
decrRefCount(cmdobj);

src/server.c

+1
Original file line numberDiff line numberDiff line change
@@ -2035,6 +2035,7 @@ void createSharedObjects(void) {
20352035
shared.ssubscribebulk = createStringObject("$10\r\nssubscribe\r\n", 17);
20362036
shared.sunsubscribebulk = createStringObject("$12\r\nsunsubscribe\r\n", 19);
20372037
shared.smessagebulk = createStringObject("$8\r\nsmessage\r\n", 14);
2038+
shared.monitorbulk = createStringObject("$7\r\nmonitor\r\n", 13);
20382039
shared.psubscribebulk = createStringObject("$10\r\npsubscribe\r\n", 17);
20392040
shared.punsubscribebulk = createStringObject("$12\r\npunsubscribe\r\n", 19);
20402041

src/server.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1437,7 +1437,7 @@ struct sharedObjectsStruct {
14371437
*xgroup, *xclaim, *script, *replconf, *eval, *persist, *set, *pexpireat, *pexpire, *time, *pxat, *absttl,
14381438
*retrycount, *force, *justid, *entriesread, *lastid, *ping, *setid, *keepttl, *load, *createconsumer, *getack,
14391439
*special_asterick, *special_equals, *default_username, *redacted, *ssubscribebulk, *sunsubscribebulk,
1440-
*smessagebulk, *select[PROTO_SHARED_SELECT_CMDS], *integers[OBJ_SHARED_INTEGERS],
1440+
*smessagebulk, *monitorbulk, *select[PROTO_SHARED_SELECT_CMDS], *integers[OBJ_SHARED_INTEGERS],
14411441
*mbulkhdr[OBJ_SHARED_BULKHDR_LEN], /* "*<value>\r\n" */
14421442
*bulkhdr[OBJ_SHARED_BULKHDR_LEN], /* "$<value>\r\n" */
14431443
*maphdr[OBJ_SHARED_BULKHDR_LEN], /* "%<value>\r\n" */

tests/unit/introspection.tcl

+14
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,20 @@ start_server {tags {"introspection"}} {
299299
set _ $res
300300
} {*"set" "foo"*"get" "foo"*}
301301

302+
test {MONITOR should support RESP3 protocol} {
303+
set rd [valkey_deferring_client]
304+
$rd HELLO 3
305+
$rd read ; # Consume the HELLO reply
306+
307+
$rd monitor
308+
$rd read ; # Consume the MONITOR reply
309+
310+
r set foo bar
311+
312+
assert_match {monitor*"set"*"foo"*"bar"*} [$rd read]
313+
$rd close
314+
}
315+
302316
test {MONITOR can log commands issued by the scripting engine} {
303317
set rd [valkey_deferring_client]
304318
$rd monitor

0 commit comments

Comments
 (0)