From e64900610920515f82bdeeaccc6b89e339d2e292 Mon Sep 17 00:00:00 2001 From: lulalala Date: Tue, 5 Mar 2013 16:22:31 +0800 Subject: [PATCH] Makes retry time calculation easier to monkey-patch by changing it from a constant proc to a method. --- lib/sidekiq/middleware/server/retry_jobs.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/sidekiq/middleware/server/retry_jobs.rb b/lib/sidekiq/middleware/server/retry_jobs.rb index 55352046..f40bde5c 100644 --- a/lib/sidekiq/middleware/server/retry_jobs.rb +++ b/lib/sidekiq/middleware/server/retry_jobs.rb @@ -43,7 +43,6 @@ module Sidekiq # delayed_job uses the same basic formula DEFAULT_MAX_RETRY_ATTEMPTS = 25 - DELAY = proc { |count| (count ** 4) + 15 + (rand(30)*(count+1)) } def call(worker, msg, queue) yield @@ -73,7 +72,7 @@ module Sidekiq end if count < max_retry_attempts - delay = DELAY.call(count) + delay = seconds_to_delay(count) logger.debug { "Failure! Retry #{count} in #{delay} seconds" } retry_at = Time.now.to_f + delay payload = Sidekiq.dump_json(msg) @@ -95,6 +94,10 @@ module Sidekiq end end + def seconds_to_delay(count) + (count ** 4) + 15 + (rand(30)*(count+1)) + end + end end end