# frozen_string_literal: true class Pubsubhubbub::SubscribeWorker include Sidekiq::Worker sidekiq_options queue: 'push', retry: 10, unique: :until_executed, dead: false, unique_retry: true 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 sidekiq_retries_exhausted do |msg, _e| account = Account.find(msg['args'].first) logger.error "PuSH subscription attempts for #{account.acct} exhausted. Unsubscribing" ::UnsubscribeService.new.call(account) end def perform(account_id) account = Account.find(account_id) logger.debug "PuSH re-subscribing to #{account.acct}" ::SubscribeService.new.call(account) rescue => e raise e.class, "Subscribe failed for #{account&.acct}: #{e.message}" end end