Do not execute the job with the same arguments as the retry job (#4814)
This commit is contained in:
parent
e821c00e74
commit
be7ffa2d75
4 changed files with 25 additions and 1 deletions
20
lib/mastodon/unique_retry_job_middleware.rb
Normal file
20
lib/mastodon/unique_retry_job_middleware.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
# 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
|
Loading…
Add table
Add a link
Reference in a new issue