Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/database.rb')
-rw-r--r--lib/gitlab/database.rb17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
index 677b4485288..b42d164d9c4 100644
--- a/lib/gitlab/database.rb
+++ b/lib/gitlab/database.rb
@@ -68,7 +68,8 @@ module Gitlab
@schemas_to_base_models ||= {
gitlab_main: [self.database_base_models.fetch(:main)],
gitlab_ci: [self.database_base_models[:ci] || self.database_base_models.fetch(:main)], # use CI or fallback to main
- gitlab_shared: self.database_base_models.values # all models
+ gitlab_shared: self.database_base_models.values, # all models
+ gitlab_internal: self.database_base_models.values # all models
}.with_indifferent_access.freeze
end
@@ -203,8 +204,13 @@ module Gitlab
# This does not look at literal connection names, but rather compares
# models that are holders for a given db_config_name
def self.gitlab_schemas_for_connection(connection)
- db_name = self.db_config_name(connection)
- primary_model = self.database_base_models.fetch(db_name.to_sym)
+ db_config = self.db_config_for_connection(connection)
+
+ # connection might not be yet adopted (returning NullPool, and no connection_klass)
+ # in such cases it is fine to ignore such connections
+ return unless db_config
+
+ primary_model = self.database_base_models.fetch(db_config.name.to_sym)
self.schemas_to_base_models.select do |_, child_models|
child_models.any? do |child_model|
@@ -218,8 +224,11 @@ module Gitlab
def self.db_config_for_connection(connection)
return unless connection
+ # For a ConnectionProxy we want to avoid ambiguous db_config as it may
+ # sometimes default to replica so we always return the primary config
+ # instead.
if connection.is_a?(::Gitlab::Database::LoadBalancing::ConnectionProxy)
- return connection.load_balancer.configuration.primary_db_config
+ return connection.load_balancer.configuration.db_config
end
# During application init we might receive `NullPool`