Module: Gitlab::Database::LoadBalancing::WalTrackingSender

Included in:
SidekiqClientMiddleware, Graphql::Subscriptions::ActionCableWithLoadBalancing
Defined in:
lib/gitlab/database/load_balancing/wal_tracking_sender.rb

Instance Method Summary collapse

Instance Method Details

#wal_location_for(load_balancer) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/gitlab/database/load_balancing/wal_tracking_sender.rb', line 17

def wal_location_for(load_balancer)
  # When only using the primary there's no need for any WAL queries.
  return if load_balancer.primary_only?

  if Session.current.use_primary?
    load_balancer.primary_write_location
  else
    load_balancer.host&.database_replica_location || load_balancer.primary_write_location
  end
end

#wal_locations_by_db_nameObject



7
8
9
10
11
12
13
14
15
# File 'lib/gitlab/database/load_balancing/wal_tracking_sender.rb', line 7

def wal_locations_by_db_name
  {}.tap do |locations|
    ::Gitlab::Database::LoadBalancing.each_load_balancer do |lb|
      if (location = wal_location_for(lb))
        locations[lb.name] = location
      end
    end
  end
end