From e9edd7e2e6240c8f66920a67a6be66aca3d24e36 Mon Sep 17 00:00:00 2001 From: James Rees Date: Thu, 13 Jul 2017 11:00:56 +0100 Subject: [PATCH] fix missing loop, to ensure all left-over keys are removed --- lib/sidekiq_unique_jobs/util.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/sidekiq_unique_jobs/util.rb b/lib/sidekiq_unique_jobs/util.rb index 88a7118cc..fd04e32e2 100644 --- a/lib/sidekiq_unique_jobs/util.rb +++ b/lib/sidekiq_unique_jobs/util.rb @@ -45,15 +45,17 @@ def expire removed_keys = {} connection do |conn| cursor = '0' - cursor, jobs = conn.hscan(SidekiqUniqueJobs::HASH_KEY, [cursor, 'MATCH', '*', 'COUNT', EXPIRE_BATCH_SIZE]) - jobs.each do |job_array| - jid, unique_key = job_array - next if conn.get(unique_key) - conn.hdel(SidekiqUniqueJobs::HASH_KEY, jid) - removed_keys[jid] = unique_key - end + loop do + cursor, jobs = conn.hscan(SidekiqUniqueJobs::HASH_KEY, [cursor, 'MATCH', '*', 'COUNT', EXPIRE_BATCH_SIZE]) + jobs.each do |job_array| + jid, unique_key = job_array + next if conn.get(unique_key) + conn.hdel(SidekiqUniqueJobs::HASH_KEY, jid) + removed_keys[jid] = unique_key + end - break if cursor == '0' + break if cursor == '0' + end end removed_keys end