From c5c4c3018a1316c9c2258a95d4f2e8002f26e608 Mon Sep 17 00:00:00 2001 From: Huang Zw Date: Mon, 22 Feb 2021 21:08:16 +0800 Subject: [PATCH] In XADD take deleted items into consideration when switch to new node (#8390) If we set stream-node-max-bytes = 0, then we insert entry then delete, do this many times, the last stream node will be very big. --- src/t_stream.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/t_stream.c b/src/t_stream.c index da43fce18..d9db97c3c 100644 --- a/src/t_stream.c +++ b/src/t_stream.c @@ -512,7 +512,9 @@ int streamAppendItem(stream *s, robj **argv, int64_t numfields, streamID *added_ { lp = NULL; } else if (server.stream_node_max_entries) { - int64_t count = lpGetInteger(lpFirst(lp)); + unsigned char *lp_ele = lpFirst(lp); + /* Count both live entries and deleted ones. */ + int64_t count = lpGetInteger(lp_ele) + lpGetInteger(lpNext(lp,lp_ele)); if (count >= server.stream_node_max_entries) { /* Shrink extra pre-allocated memory */ lp = lpShrinkToFit(lp);