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.



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

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.



78
79
80
# File 'lib/gitlab/database/load_balancing/session_map.rb', line 78

def scoped_sessions
  @scoped_sessions
end

Instance Method Details

#fallback_to_replicas_for_ambiguous_queriesObject



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

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

#ignore_writesObject



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

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

#use_primaryObject



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

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

#use_primary!Object



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

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

#use_replicas_for_read_queriesObject



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

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