commit: 34ccc058fa738cd73c273d6b64efbe67402bd86c
parent: 7f9a353b94f628396c445ae07ed1508c91b93fcb
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Mon, 10 Jul 2017 18:04:23 +0200
Limit total subscribe retries to 10, but space them out more (#4142)
Since there is little point in retrying so often when a service is down
or does not exist anymore. Subscriptions are renewed 1 day before they
should expire, so retrying in 30 minutes, then 2 hours, then 12 hours
is fine. If even after that, the remote server does not work, there is
little sense in retrying more often than once a day
Also, uniqueness of the job should ensure that failed retries will
not result in multiple retries for the same endpoint when the next
resubscription cycle comes
Diffstat:
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/app/workers/pubsubhubbub/subscribe_worker.rb b/app/workers/pubsubhubbub/subscribe_worker.rb
@@ -3,7 +3,20 @@
class Pubsubhubbub::SubscribeWorker
include Sidekiq::Worker
- sidekiq_options queue: 'push'
+ sidekiq_options queue: 'push', retry: 10, unique: :until_executed
+
+ sidekiq_retry_in do |count|
+ case count
+ when 0
+ 30.minutes.seconds
+ when 1
+ 2.hours.seconds
+ when 2
+ 12.hours.seconds
+ else
+ 24.hours.seconds * (count - 2)
+ end
+ end
def perform(account_id)
account = Account.find(account_id)