From f93b2fa524cbaab1d8b0ab4d48bae8d4017fecee Mon Sep 17 00:00:00 2001 From: antirez Date: Wed, 8 Jan 2020 10:10:11 +0100 Subject: XCLAIM: Create the consumer only on successful claims. Fixes #6744. --- src/t_stream.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/t_stream.c b/src/t_stream.c index 76eaf989b..5cfab8bf5 100644 --- a/src/t_stream.c +++ b/src/t_stream.c @@ -2255,7 +2255,7 @@ void xclaimCommand(client *c) { } /* Do the actual claiming. */ - streamConsumer *consumer = streamLookupConsumer(group,c->argv[3]->ptr,1); + streamConsumer *consumer = NULL; void *arraylenptr = addDeferredMultiBulkLength(c); size_t arraylen = 0; for (int j = 5; j <= last_id_arg; j++) { @@ -2307,9 +2307,11 @@ void xclaimCommand(client *c) { if (nack->consumer) raxRemove(nack->consumer->pel,buf,sizeof(buf),NULL); /* Update the consumer and idle time. */ + if (consumer == NULL) + consumer = streamLookupConsumer(group,c->argv[3]->ptr,1); nack->consumer = consumer; nack->delivery_time = deliverytime; - /* Set the delivery attempts counter if given, otherwise + /* Set the delivery attempts counter if given, otherwise * autoincrement unless JUSTID option provided */ if (retrycount >= 0) { nack->delivery_count = retrycount; -- cgit v1.2.1