summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2019-08-21 20:29:10 +0000
committerStan Hu <stanhu@gmail.com>2019-08-21 20:29:10 +0000
commitd57d8ddb72e069e14a272a93873271807b3a33d9 (patch)
tree08f95b3e9906744d5ce1b8314f3a58a090765ddd
parent45b3f554aabf75ef5b7e0a4f7cb05a67bed05a70 (diff)
parentdbd88c02d6d2e4cb8af5347dd8e7b3ae63079a9d (diff)
downloadgitlab-ce-d57d8ddb72e069e14a272a93873271807b3a33d9.tar.gz
Merge branch 'sidekiq-interrupt-running-jobs-deadset' into 'master'
Put cancelled job in DeadSet See merge request gitlab-org/gitlab-ce!32070
-rw-r--r--lib/gitlab/sidekiq_middleware/monitor.rb6
-rw-r--r--spec/lib/gitlab/sidekiq_middleware/monitor_spec.rb10
2 files changed, 14 insertions, 2 deletions
diff --git a/lib/gitlab/sidekiq_middleware/monitor.rb b/lib/gitlab/sidekiq_middleware/monitor.rb
index 0d88fe760d3..53a6132edac 100644
--- a/lib/gitlab/sidekiq_middleware/monitor.rb
+++ b/lib/gitlab/sidekiq_middleware/monitor.rb
@@ -8,8 +8,12 @@ module Gitlab
yield
end
rescue Gitlab::SidekiqMonitor::CancelledError
+ # push job to DeadSet
+ payload = ::Sidekiq.dump_json(job)
+ ::Sidekiq::DeadSet.new.kill(payload, notify_failure: false)
+
# ignore retries
- raise Sidekiq::JobRetry::Skip
+ raise ::Sidekiq::JobRetry::Skip
end
end
end
diff --git a/spec/lib/gitlab/sidekiq_middleware/monitor_spec.rb b/spec/lib/gitlab/sidekiq_middleware/monitor_spec.rb
index 2933d26a387..7319cdc2399 100644
--- a/spec/lib/gitlab/sidekiq_middleware/monitor_spec.rb
+++ b/spec/lib/gitlab/sidekiq_middleware/monitor_spec.rb
@@ -33,9 +33,17 @@ describe Gitlab::SidekiqMiddleware::Monitor do
end
end
- it 'does skip this job' do
+ it 'skips the job' do
expect { subject }.to raise_error(Sidekiq::JobRetry::Skip)
end
+
+ it 'puts job in DeadSet' do
+ ::Sidekiq::DeadSet.new.clear
+
+ expect do
+ subject rescue Sidekiq::JobRetry::Skip
+ end.to change { ::Sidekiq::DeadSet.new.size }.by(1)
+ end
end
end
end