summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalvatore Sanfilippo <antirez@gmail.com>2020-03-31 16:55:29 +0200
committerGitHub <noreply@github.com>2020-03-31 16:55:29 +0200
commita20c206de7cb3ccd176b05b883e11b03c34db417 (patch)
tree2211fc1255da29c2bc6f31aaf15ddc181f25f5de
parent1b4bc60999f618cd171e7a390790470e0ec80244 (diff)
parent6c8221580c4ed5d3602d10eb467603d576eaf9c8 (diff)
downloadredis-a20c206de7cb3ccd176b05b883e11b03c34db417.tar.gz
Merge pull request #7048 from guybe7/rename_unblock_stream
RENAME can unblock XREADGROUP
-rw-r--r--src/db.c3
-rw-r--r--src/debug.c2
-rw-r--r--tests/unit/type/stream-cgroups.tcl21
3 files changed, 25 insertions, 1 deletions
diff --git a/src/db.c b/src/db.c
index 04e26c33b..211bb978d 100644
--- a/src/db.c
+++ b/src/db.c
@@ -182,7 +182,8 @@ void dbAdd(redisDb *db, robj *key, robj *val) {
serverAssertWithInfo(NULL,key,retval == DICT_OK);
if (val->type == OBJ_LIST ||
- val->type == OBJ_ZSET)
+ val->type == OBJ_ZSET ||
+ val->type == OBJ_STREAM)
signalKeyAsReady(db, key);
if (server.cluster_enabled) slotToKeyAdd(key);
}
diff --git a/src/debug.c b/src/debug.c
index 36af35aec..83e5b6197 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -817,6 +817,8 @@ void serverLogObjectDebugInfo(const robj *o) {
serverLog(LL_WARNING,"Sorted set size: %d", (int) zsetLength(o));
if (o->encoding == OBJ_ENCODING_SKIPLIST)
serverLog(LL_WARNING,"Skiplist level: %d", (int) ((const zset*)o->ptr)->zsl->level);
+ } else if (o->type == OBJ_STREAM) {
+ serverLog(LL_WARNING,"Stream size: %d", (int) streamLength(o));
}
}
diff --git a/tests/unit/type/stream-cgroups.tcl b/tests/unit/type/stream-cgroups.tcl
index 6b9a4a9cd..a27e1f582 100644
--- a/tests/unit/type/stream-cgroups.tcl
+++ b/tests/unit/type/stream-cgroups.tcl
@@ -170,6 +170,27 @@ start_server {
assert_error "*NOGROUP*" {$rd read}
}
+ test {RENAME can unblock XREADGROUP with data} {
+ r del mystream
+ r XGROUP CREATE mystream mygroup $ MKSTREAM
+ set rd [redis_deferring_client]
+ $rd XREADGROUP GROUP mygroup Alice BLOCK 0 STREAMS mystream ">"
+ r XGROUP CREATE mystream2 mygroup $ MKSTREAM
+ r XADD mystream2 100 f1 v1
+ r RENAME mystream2 mystream
+ assert_equal "{mystream {{100-0 {f1 v1}}}}" [$rd read] ;# mystream2 had mygroup before RENAME
+ }
+
+ test {RENAME can unblock XREADGROUP with -NOGROUP} {
+ r del mystream
+ r XGROUP CREATE mystream mygroup $ MKSTREAM
+ set rd [redis_deferring_client]
+ $rd XREADGROUP GROUP mygroup Alice BLOCK 0 STREAMS mystream ">"
+ r XADD mystream2 100 f1 v1
+ r RENAME mystream2 mystream
+ assert_error "*NOGROUP*" {$rd read} ;# mystream2 didn't have mygroup before RENAME
+ }
+
test {XCLAIM can claim PEL items from another consumer} {
# Add 3 items into the stream, and create a consumer group
r del mystream