From 2ba9a57c9aa5a44d042338518bfd3da30dc60fc3 Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 20 Mar 2018 11:25:49 +0100 Subject: [PATCH] CG: Add JUSTID to XCLAIM propagation to reduce CPU usage. --- src/t_stream.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/t_stream.c b/src/t_stream.c index 39ab2f88..f2da0100 100644 --- a/src/t_stream.c +++ b/src/t_stream.c @@ -686,8 +686,11 @@ void streamPropagateXCLAIM(client *c, robj *key, robj *group, robj *id, streamNA /* We need to generate an XCLAIM that will work in a idempotent fashion: * * XCLAIM 0 TIME - * RETRYCOUNT [FORCE]. */ - robj *argv[11]; + * RETRYCOUNT FORCE JUSTID. + * + * Note that JUSTID is useful in order to avoid that XCLAIM will do + * useless work in the slave side, trying to fetch the stream item. */ + robj *argv[12]; argv[0] = createStringObject("XCLAIM",6); argv[1] = key; argv[2] = group; @@ -699,7 +702,8 @@ void streamPropagateXCLAIM(client *c, robj *key, robj *group, robj *id, streamNA argv[8] = createStringObject("RETRYCOUNT",10); argv[9] = createStringObjectFromLongLong(nack->delivery_count); argv[10] = createStringObject("FORCE",5); - propagate(server.xclaimCommand,c->db->id,argv,11,PROPAGATE_AOF|PROPAGATE_REPL); + argv[11] = createStringObject("JUSTID",6); + propagate(server.xclaimCommand,c->db->id,argv,12,PROPAGATE_AOF|PROPAGATE_REPL); decrRefCount(argv[0]); decrRefCount(argv[3]); decrRefCount(argv[4]);