summaryrefslogtreecommitdiff
path: root/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb')
-rw-r--r--lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb12
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