From d6669e9dc58cb47c5b1a7a02843d7f929047e2a5 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 8 Nov 2025 21:35:31 +0000 Subject: [PATCH] [Fix] Force GC after final batch to release all Redis connections Previously GC was skipped for the final batch (batch_end >= #results), leaving those connections checked out. The subsequent DEL of idx_key could hit the pool limit if batch_size was near the limit, leaving the _processing key behind and exhausting the pool for the next date. Now collectgarbage() runs after every batch including the last one, ensuring all connections are released before the DEL operation. --- lualib/rspamadm/dmarc_report.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lualib/rspamadm/dmarc_report.lua b/lualib/rspamadm/dmarc_report.lua index da81a14831..ef4c20d451 100644 --- a/lualib/rspamadm/dmarc_report.lua +++ b/lualib/rspamadm/dmarc_report.lua @@ -624,10 +624,8 @@ local function process_report_date(opts, start_time, end_time, date) end end - -- Force garbage collection between batches to release Redis connections - if batch_end < #results then - collectgarbage("collect") - end + -- Force garbage collection after each batch to release Redis connections + collectgarbage("collect") end -- Shuffle reports to make sending more fair -- 2.47.3