From 4bcc5d1f65ce7b052a94b6f2d4b71f4557952b71 Mon Sep 17 00:00:00 2001 From: Frances McMullin Date: Fri, 1 Jul 2022 08:53:17 +0100 Subject: [PATCH] Avoid skipping ranges when looping through queues (#720) 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..dcfcca6b 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 = 0 if deleted_size.negative? end end