Welcome to mirror list, hosted at ThFree Co, Russian Federation.

sidekiq_middleware.rb « migration_support « click_house « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e4e6c453e8dd7c5e0c03fc6178901019dee33e39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# frozen_string_literal: true

module ClickHouse
  module MigrationSupport
    class SidekiqMiddleware
      def call(worker, job, queue)
        return yield unless register_worker?(worker.class)

        ::ClickHouse::MigrationSupport::ExclusiveLock.register_running_worker(worker.class, worker_id(job, queue)) do
          yield
        end
      end

      private

      def worker_id(job, queue)
        [queue, job['jid']].join(':')
      end

      def register_worker?(worker_class)
        worker_class.respond_to?(:click_house_migration_lock) && worker_class.register_click_house_worker?
      end
    end
  end
end