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.
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