Skip to content

Commit 1eb0994

Browse files
committed
Streams: use bulk replies instead of status replies.
They play better with Lua scripting, otherwise Lua will see status replies as "ok" = "string" which is very odd, and actually as @oranagra reasoned in issue redis#5456 in the rest of the Redis code base there was no such concern as saving a few bytes when the protocol is emitted.
1 parent bcc0916 commit 1eb0994

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

src/t_stream.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -777,8 +777,8 @@ int streamDeleteItem(stream *s, streamID *id) {
777777
* in the standard <ms>-<seq> format, using the simple string protocol
778778
* of REPL. */
779779
void addReplyStreamID(client *c, streamID *id) {
780-
sds replyid = sdscatfmt(sdsempty(),"+%U-%U\r\n",id->ms,id->seq);
781-
addReplySds(c,replyid);
780+
sds replyid = sdscatfmt(sdsempty(),"%U-%U",id->ms,id->seq);
781+
addReplyBulkSds(c,replyid);
782782
}
783783

784784
/* Similar to the above function, but just creates an object, usually useful
@@ -2456,11 +2456,11 @@ NULL
24562456
if (idle < 0) idle = 0;
24572457

24582458
addReplyMultiBulkLen(c,6);
2459-
addReplyStatus(c,"name");
2459+
addReplyBulkCString(c,"name");
24602460
addReplyBulkCBuffer(c,consumer->name,sdslen(consumer->name));
2461-
addReplyStatus(c,"pending");
2461+
addReplyBulkCString(c,"pending");
24622462
addReplyLongLong(c,raxSize(consumer->pel));
2463-
addReplyStatus(c,"idle");
2463+
addReplyBulkCString(c,"idle");
24642464
addReplyLongLong(c,idle);
24652465
}
24662466
raxStop(&ri);
@@ -2478,28 +2478,28 @@ NULL
24782478
while(raxNext(&ri)) {
24792479
streamCG *cg = ri.data;
24802480
addReplyMultiBulkLen(c,8);
2481-
addReplyStatus(c,"name");
2481+
addReplyBulkCString(c,"name");
24822482
addReplyBulkCBuffer(c,ri.key,ri.key_len);
2483-
addReplyStatus(c,"consumers");
2483+
addReplyBulkCString(c,"consumers");
24842484
addReplyLongLong(c,raxSize(cg->consumers));
2485-
addReplyStatus(c,"pending");
2485+
addReplyBulkCString(c,"pending");
24862486
addReplyLongLong(c,raxSize(cg->pel));
2487-
addReplyStatus(c,"last-delivered-id");
2487+
addReplyBulkCString(c,"last-delivered-id");
24882488
addReplyStreamID(c,&cg->last_id);
24892489
}
24902490
raxStop(&ri);
24912491
} else if (!strcasecmp(opt,"STREAM") && c->argc == 3) {
24922492
/* XINFO STREAM <key> (or the alias XINFO <key>). */
24932493
addReplyMultiBulkLen(c,14);
2494-
addReplyStatus(c,"length");
2494+
addReplyBulkCString(c,"length");
24952495
addReplyLongLong(c,s->length);
2496-
addReplyStatus(c,"radix-tree-keys");
2496+
addReplyBulkCString(c,"radix-tree-keys");
24972497
addReplyLongLong(c,raxSize(s->rax));
2498-
addReplyStatus(c,"radix-tree-nodes");
2498+
addReplyBulkCString(c,"radix-tree-nodes");
24992499
addReplyLongLong(c,s->rax->numnodes);
2500-
addReplyStatus(c,"groups");
2500+
addReplyBulkCString(c,"groups");
25012501
addReplyLongLong(c,s->cgroups ? raxSize(s->cgroups) : 0);
2502-
addReplyStatus(c,"last-generated-id");
2502+
addReplyBulkCString(c,"last-generated-id");
25032503
addReplyStreamID(c,&s->last_id);
25042504

25052505
/* To emit the first/last entry we us the streamReplyWithRange()
@@ -2508,11 +2508,11 @@ NULL
25082508
streamID start, end;
25092509
start.ms = start.seq = 0;
25102510
end.ms = end.seq = UINT64_MAX;
2511-
addReplyStatus(c,"first-entry");
2511+
addReplyBulkCString(c,"first-entry");
25122512
count = streamReplyWithRange(c,s,&start,&end,1,0,NULL,NULL,
25132513
STREAM_RWR_RAWENTRIES,NULL);
25142514
if (!count) addReply(c,shared.nullbulk);
2515-
addReplyStatus(c,"last-entry");
2515+
addReplyBulkCString(c,"last-entry");
25162516
count = streamReplyWithRange(c,s,&start,&end,1,1,NULL,NULL,
25172517
STREAM_RWR_RAWENTRIES,NULL);
25182518
if (!count) addReply(c,shared.nullbulk);

0 commit comments

Comments
 (0)