From 325128101ad16edb442e5e945c64438a4c1b3b61 Mon Sep 17 00:00:00 2001 From: Riley Date: Tue, 14 May 2024 16:05:53 -0500 Subject: [PATCH 1/2] Use block argument for redis multi --- lib/resque_cleaner.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/resque_cleaner.rb b/lib/resque_cleaner.rb index 57d1298..6fa2b49 100644 --- a/lib/resque_cleaner.rb +++ b/lib/resque_cleaner.rb @@ -124,18 +124,18 @@ def requeue(clear_after_requeue=false, options={}, &block) index = @limiter.start_index + i - requeued value = redis.lindex(:failed, index) - redis.multi do + redis.multi do |multi| # no change needed to support ActiveJob Job.create(queue||job['queue'], job['payload']['class'], *job['payload']['args']) if clear_after_requeue # remove job # TODO: should use ltrim. not sure why i used lrem here... - redis.lrem(:failed, 1, value) + multi.lrem(:failed, 1, value) else # mark retried job['retried_at'] = Time.now.strftime("%Y/%m/%d %H:%M:%S") - redis.lset(:failed, @limiter.start_index+i, Resque.encode(job)) + multi.lset(:failed, @limiter.start_index+i, Resque.encode(job)) end end From b9027ecc0a228ba41bd4baab16d750abdcdb0e9d Mon Sep 17 00:00:00 2001 From: Riley Date: Wed, 15 May 2024 09:41:51 -0500 Subject: [PATCH 2/2] Remove multi entirely - Job.create does redis internally --- lib/resque_cleaner.rb | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/lib/resque_cleaner.rb b/lib/resque_cleaner.rb index 6fa2b49..e307ed4 100644 --- a/lib/resque_cleaner.rb +++ b/lib/resque_cleaner.rb @@ -124,19 +124,17 @@ def requeue(clear_after_requeue=false, options={}, &block) index = @limiter.start_index + i - requeued value = redis.lindex(:failed, index) - redis.multi do |multi| - # no change needed to support ActiveJob - Job.create(queue||job['queue'], job['payload']['class'], *job['payload']['args']) - - if clear_after_requeue - # remove job - # TODO: should use ltrim. not sure why i used lrem here... - multi.lrem(:failed, 1, value) - else - # mark retried - job['retried_at'] = Time.now.strftime("%Y/%m/%d %H:%M:%S") - multi.lset(:failed, @limiter.start_index+i, Resque.encode(job)) - end + # no change needed to support ActiveJob + Job.create(queue||job['queue'], job['payload']['class'], *job['payload']['args']) + + if clear_after_requeue + # remove job + # TODO: should use ltrim. not sure why i used lrem here... + redis.lrem(:failed, 1, value) + else + # mark retried + job['retried_at'] = Time.now.strftime("%Y/%m/%d %H:%M:%S") + redis.lset(:failed, @limiter.start_index+i, Resque.encode(job)) end requeued += 1