Class: Gitlab::Database::LoadBalancing::ScopedSessions

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/database/load_balancing/session_map.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(scope, session_map) ⇒ ScopedSessions

Returns a new instance of ScopedSessions.



84
85
86
87
# File 'lib/gitlab/database/load_balancing/session_map.rb', line 84

def initialize(scope, session_map)
  @scope = scope
  @scoped_sessions = session_map.slice(*@scope).values
end

Instance Attribute Details

#scoped_sessionsObject (readonly)

Returns the value of attribute scoped_sessions.



82
83
84
# File 'lib/gitlab/database/load_balancing/session_map.rb', line 82

def scoped_sessions
  @scoped_sessions
end

Instance Method Details

#fallback_to_replicas_for_ambiguous_queriesObject



105
106
107
# File 'lib/gitlab/database/load_balancing/session_map.rb', line 105

def fallback_to_replicas_for_ambiguous_queries(&)
  nest_sessions(scoped_sessions, :fallback_to_replicas_for_ambiguous_queries, &)
end

#ignore_writesObject



93
94
95
# File 'lib/gitlab/database/load_balancing/session_map.rb', line 93

def ignore_writes(&)
  nest_sessions(scoped_sessions, :without_sticky_writes, &)
end

#use_primaryObject



97
98
99
# File 'lib/gitlab/database/load_balancing/session_map.rb', line 97

def use_primary(&)
  nest_sessions(scoped_sessions, :use_primary, &)
end

#use_primary!Object



89
90
91
# File 'lib/gitlab/database/load_balancing/session_map.rb', line 89

def use_primary!
  scoped_sessions.each(&:use_primary!)
end

#use_replicas_for_read_queriesObject



101
102
103
# File 'lib/gitlab/database/load_balancing/session_map.rb', line 101

def use_replicas_for_read_queries(&)
  nest_sessions(scoped_sessions, :use_replicas_for_read_queries, &)
end