diff options
author | antirez <antirez@gmail.com> | 2020-04-17 12:38:12 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2020-04-17 12:40:57 +0200 |
commit | 1fc8ef81aacd5f789a6e6446a975c37a269cdf8c (patch) | |
tree | c88dae29cc75fd93cb22a2bbe5ec3a6afb9afe76 | |
parent | a5e24eabc306f7fcead0a9d2a5f1433401b6c0ce (diff) | |
download | redis-1fc8ef81aacd5f789a6e6446a975c37a269cdf8c.tar.gz |
Fix XCLAIM propagation in AOF/replicas for blocking XREADGROUP.
See issue #7105.
-rw-r--r-- | src/server.c | 9 | ||||
-rw-r--r-- | src/t_stream.c | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/server.c b/src/server.c index 3d3aa7faa..8a8edbc0b 100644 --- a/src/server.c +++ b/src/server.c @@ -2336,8 +2336,13 @@ struct redisCommand *lookupCommandOrOriginal(sds name) { * + PROPAGATE_AOF (propagate into the AOF file if is enabled) * + PROPAGATE_REPL (propagate into the replication link) * - * This should not be used inside commands implementation. Use instead - * alsoPropagate(), preventCommandPropagation(), forceCommandPropagation(). + * This should not be used inside commands implementation since it will not + * wrap the resulting commands in MULTI/EXEC. Use instead alsoPropagate(), + * preventCommandPropagation(), forceCommandPropagation(). + * + * However for functions that need to (also) propagate out of the context of a + * command execution, for example when serving a blocked client, you + * want to use propagate(). */ void propagate(struct redisCommand *cmd, int dbid, robj **argv, int argc, int flags) diff --git a/src/t_stream.c b/src/t_stream.c index 3ee629ee2..8cc5b2ee2 100644 --- a/src/t_stream.c +++ b/src/t_stream.c @@ -842,7 +842,7 @@ void streamPropagateXCLAIM(client *c, robj *key, streamCG *group, robj *groupnam argv[11] = createStringObject("JUSTID",6); argv[12] = createStringObject("LASTID",6); argv[13] = createObjectFromStreamID(&group->last_id); - alsoPropagate(server.xclaimCommand,c->db->id,argv,14,PROPAGATE_AOF|PROPAGATE_REPL); + propagate(server.xclaimCommand,c->db->id,argv,14,PROPAGATE_AOF|PROPAGATE_REPL); decrRefCount(argv[0]); decrRefCount(argv[3]); decrRefCount(argv[4]); |