diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-07-10 18:04:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-10 18:04:23 +0200 |
commit | 34ccc058fa738cd73c273d6b64efbe67402bd86c (patch) | |
tree | e4003a9ace59abace3b82095bd9a286392253e3d | |
parent | 7f9a353b94f628396c445ae07ed1508c91b93fcb (diff) |
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
-rw-r--r-- | app/workers/pubsubhubbub/subscribe_worker.rb | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/app/workers/pubsubhubbub/subscribe_worker.rb b/app/workers/pubsubhubbub/subscribe_worker.rb index 5b0956b6b..6865e7136 100644 --- 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) |