diff options
Diffstat (limited to 'lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb')
-rw-r--r-- | lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb b/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb index b84673c4cee..c6fb50b4610 100644 --- a/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb +++ b/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb @@ -66,6 +66,10 @@ module Gitlab jid != existing_jid end + def droppable? + idempotent? && duplicate? && DuplicateJobs.drop_duplicates? + end + private attr_reader :queue_name, :strategy, :job @@ -98,6 +102,14 @@ module Gitlab def idempotency_string "#{worker_class_name}:#{arguments.join('-')}" end + + def idempotent? + worker_class = worker_class_name.to_s.safe_constantize + return false unless worker_class + return false unless worker_class.respond_to?(:idempotent?) + + worker_class.idempotent? + end end end end |