From: Vsevolod Stakhov Date: Sat, 8 Nov 2025 21:35:31 +0000 (+0000) Subject: [Fix] Force GC after final batch to release all Redis connections X-Git-Tag: 3.14.0~7^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F5737%2Fhead;p=thirdparty%2Frspamd.git [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. --- 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