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 |
# File 'lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb', line 12 def perform(job) job_deleted = false super yield should_reschedule = duplicate_job.should_reschedule? # Deleting before rescheduling to make sure we don't deduplicate again. duplicate_job.delete! job_deleted = true duplicate_job.reschedule if should_reschedule ensure duplicate_job.delete! unless job_deleted end |