class Pubsubhubbub::SubscribeWorker
include Sidekiq::Worker
- sidekiq_options queue: 'push', retry: 10, unique: :until_executed, dead: false, unique_retry: true
+ sidekiq_options queue: 'push', retry: 10, unique: :until_executed, dead: false
sidekiq_retry_in do |count|
case count
require_relative '../lib/paperclip/gif_transcoder'
require_relative '../lib/paperclip/video_transcoder'
require_relative '../lib/mastodon/version'
-require_relative '../lib/mastodon/unique_retry_job_middleware'
Dotenv::Railtie.load
Sidekiq.configure_server do |config|
config.redis = redis_params
- config.client_middleware do |chain|
- chain.add Mastodon::UniqueRetryJobMiddleware
- end
end
Sidekiq.configure_client do |config|
config.redis = redis_params
- config.client_middleware do |chain|
- chain.add Mastodon::UniqueRetryJobMiddleware
- end
end
+++ /dev/null
-# frozen_string_literal: true
-
-class Mastodon::UniqueRetryJobMiddleware
- def call(_worker_class, item, _queue, _redis_pool)
- return if item['unique_retry'] && retried?(item)
- yield
- end
-
- private
-
- def retried?(item)
- # Use unique digest key of SidekiqUniqueJobs
- unique_key = SidekiqUniqueJobs::UNIQUE_DIGEST_KEY
- unique_digest = item[unique_key]
- class_name = item['class']
- retries = Sidekiq::RetrySet.new
-
- retries.any? { |job| job.item['class'] == class_name && job.item[unique_key] == unique_digest }
- end
-end