Do not execute the job with the same arguments as the retry job (#4814)
parent
e821c00e74
commit
be7ffa2d75
@ -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…
Reference in new issue