Class: Gitlab::Database::LoadBalancing::SidekiqClientMiddleware

Inherits:
Object
  • Object
show all
Includes:
WalTrackingSender, Utils::StrongMemoize
Defined in:
lib/gitlab/database/load_balancing/sidekiq_client_middleware.rb

Instance Method Summary collapse

Methods included from WalTrackingSender

#wal_location_for, #wal_locations_by_db_name

Instance Method Details

#call(worker_class, job, _queue, _redis_pool) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/gitlab/database/load_balancing/sidekiq_client_middleware.rb', line 10

def call(worker_class, job, _queue, _redis_pool)
  # Mailers can't be constantized
  worker_class = worker_class.to_s.safe_constantize
  # ActiveJobs have wrapped class stored in 'wrapped' key
  resolved_class = job['wrapped'].to_s.safe_constantize || worker_class

  if load_balancing_enabled?(resolved_class)
    job['worker_data_consistency'] = resolved_class.get_data_consistency
    set_data_consistency_locations!(job) unless job['wal_locations']
  else
    job['worker_data_consistency'] = ::WorkerAttributes::DEFAULT_DATA_CONSISTENCY
  end

  yield
end