Skip to content
Snippets Groups Projects
Commit be7ffa2d authored by abcang's avatar abcang Committed by Eugen Rochko
Browse files

Do not execute the job with the same arguments as the retry job (#4814)

parent e821c00e
No related branches found
No related tags found
No related merge requests found
......@@ -3,7 +3,7 @@
class Pubsubhubbub::SubscribeWorker
include Sidekiq::Worker
sidekiq_options queue: 'push', retry: 10, unique: :until_executed, dead: false
sidekiq_options queue: 'push', retry: 10, unique: :until_executed, dead: false, unique_retry: true
sidekiq_retry_in do |count|
case count
......
......@@ -10,6 +10,7 @@ require_relative '../app/lib/exceptions'
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
......
......@@ -13,4 +13,7 @@ end
Sidekiq.configure_client do |config|
config.redis = redis_params
config.client_middleware do |chain|
chain.add Mastodon::UniqueRetryJobMiddleware
end
end
# 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment