Class: Gitlab::SidekiqMiddleware::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/sidekiq_middleware.rb

Class Method Summary collapse

Class Method Details

.configuratorObject

The result of this method should be passed to Sidekiq’s ‘config.client_middleware` method eg: `config.client_middleware(&Gitlab::SidekiqMiddleware::Client.configurator)`



37
38
39
40
41
# File 'lib/gitlab/sidekiq_middleware.rb', line 37

def self.configurator
  ->(chain) do
    middlewares.each { |middleware| chain.add(middleware) }
  end
end

.middlewaresObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/gitlab/sidekiq_middleware.rb', line 8

def self.middlewares
  [
    # ConcurrencyLimit::Resume needs to be first and before Labkit and ConcurrencyLimit::Client
    ::Gitlab::SidekiqMiddleware::ConcurrencyLimit::Resume,
    ::Gitlab::SidekiqMiddleware::WorkerContext::Client, # needs to be before the Labkit middleware
    ::Labkit::Middleware::Sidekiq::Client,
    # Sidekiq Client Middleware should be placed before DuplicateJobs::Client middleware,
    # so we can store WAL location before we deduplicate the job.
    ::Gitlab::Database::LoadBalancing::SidekiqClientMiddleware,
    ::Gitlab::SidekiqMiddleware::PauseControl::Client,
    ::Gitlab::SidekiqMiddleware::ConcurrencyLimit::Client,
    # NOTE: Everything from DuplicateJobs::Client to DuplicateJobs::Server must yield
    # no returning or job interception as it will leave the duplicate job redis key
    # dangling and errorneously deduplicating future jobs until key expires.
    ::Gitlab::SidekiqMiddleware::DuplicateJobs::Client,
    ::Gitlab::SidekiqStatus::ClientMiddleware,
    ::Gitlab::SidekiqMiddleware::AdminMode::Client,
    # Size limiter should be placed at the bottom, but before the metrics middleware
    # NOTE: this raises error after the duplicate jobs middleware but is acceptable
    # since jobs that are too large should not be enqueued.
    ::Gitlab::SidekiqMiddleware::SizeLimiter::Client,
    ::Gitlab::SidekiqMiddleware::ClientMetrics,
    ::Gitlab::SidekiqMiddleware::Identity::Passthrough
  ]
end