summaryrefslogtreecommitdiff
path: root/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb')
-rw-r--r--lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb b/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb
index 8c7e15364f8..347f4e61d19 100644
--- a/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb
+++ b/lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executed.rb
@@ -10,6 +10,8 @@ module Gitlab
class UntilExecuted < DeduplicatesWhenScheduling
override :perform
def perform(job)
+ job_deleted = false
+
super
yield
@@ -17,7 +19,10 @@ module Gitlab
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
end
end