From 183ef7ae9bbc91d3bba0735df1669e95dc53a24e Mon Sep 17 00:00:00 2001 From: "zhaozhao.zz" Date: Thu, 11 Oct 2018 21:20:46 +0800 Subject: [PATCH] Streams: XCLAIM ignore minidle if NACK is created by FORCE Because the NACK->consumer is NULL, if idletime < minidle the NACK does not belong to any consumer, then redis will crash in XPENDING. --- 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 ff95132c..323783a7 100644 --- a/src/t_stream.c +++ b/src/t_stream.c @@ -2165,8 +2165,10 @@ void xclaimCommand(client *c) { if (nack != raxNotFound) { /* We need to check if the minimum idle time requested - * by the caller is satisfied by this entry. */ - if (minidle) { + * by the caller is satisfied by this entry. + * Note that if nack->consumer is NULL, means the NACK + * is created by FORCE, we should ignore minidle. */ + if (nack->consumer && minidle) { mstime_t this_idle = now - nack->delivery_time; if (this_idle < minidle) continue; }