Archived
2
0
Fork 0
This repository has been archived on 2024-06-09. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
mastodon/lib/mastodon/unique_retry_job_middleware.rb

20 lines
545 B
Ruby

# 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