From 8f918c7d2060ee74f4b1a3bf105a88d33ce43dca Mon Sep 17 00:00:00 2001 From: Frances McMullin Date: Thu, 30 Jun 2022 11:12:11 +0100 Subject: [PATCH] Avoid negative ranges when looping through queues --- lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb b/lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb index 56b61154..91b2b1ab 100644 --- a/lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb +++ b/lib/sidekiq_unique_jobs/orphans/ruby_reaper.rb @@ -229,6 +229,7 @@ def entries(conn, queue, &block) # rubocop:disable Metrics/MethodLength loop do range_start = (page * page_size) - deleted_size + range_end = range_start + page_size - 1 entries = conn.lrange(queue_key, range_start, range_end) page += 1 @@ -238,6 +239,9 @@ def entries(conn, queue, &block) # rubocop:disable Metrics/MethodLength entries.each(&block) deleted_size = initial_size - conn.llen(queue_key) + + # The queue is growing, not shrinking, just keep looping + deleted_size = deleted_size.positive? ? deleted_size : 0 end end