summaryrefslogtreecommitdiff
path: root/lib/gitlab/sidekiq_middleware/monitor.rb
blob: 53a6132edac367b5d065e35c5dd05bd70538e26b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# frozen_string_literal: true

module Gitlab
  module SidekiqMiddleware
    class Monitor
      def call(worker, job, queue)
        Gitlab::SidekiqMonitor.instance.within_job(job['jid'], queue) do
          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
      end
    end
  end
end