You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
545 B
20 lines
545 B
# 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
|
|
|