Class: Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies::UntilExecuted
- Inherits:
-
DeduplicatesWhenScheduling
- Object
- Base
- DeduplicatesWhenScheduling
- Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies::UntilExecuted
- Defined in:
- lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb
Overview
This strategy takes a lock before scheduling the job in a queue and removes the lock after the job has executed preventing a new job to be queued while a job is still executing.
Instance Method Summary collapse
Methods inherited from DeduplicatesWhenScheduling
Methods included from Utils::Override
#extended, extensions, #included, #method_added, #override, #prepended, #queue_verification, verify!
Methods inherited from Base
Constructor Details
This class inherits a constructor from Gitlab::SidekiqMiddleware::DuplicateJobs::Strategies::DeduplicatesWhenScheduling
Instance Method Details
#perform(job) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb', line 12 def perform(job) job_deleted = false super yield # early return since not reschedulable. ensure block to handle cleanup. return unless duplicate_job.reschedulable? duplicate_job.delete! job_deleted = true duplicate_job.reschedule if duplicate_job.check_and_del_reschedule_signal ensure duplicate_job.delete! unless job_deleted end |