Commit b617e904 authored by Thong Kuah's avatar Thong Kuah

Reconfigure DB load balancing connection on code reload

In development, when code is reloaded, we lose the connection class
attribute. So we need to setup a to_prepare block to reconfigure DB load
balancing.

Also add logging for when DB load balancing setup runs.

Note: whether code reloads depends on config.cache_classes,
and config.reload_classes_only_on_change. In production,
config.cache_classes is true, so no code reloading happens there.

Changelog: fixed
parent 87458f6c
......@@ -2,6 +2,15 @@
Gitlab::Application.configure do |config|
config.middleware.use(Gitlab::Database::LoadBalancing::RackMiddleware)
# We need re-rerun the setup when code reloads in development
config.reloader.to_prepare do
if Rails.env.development? || Rails.env.test?
Gitlab::Database::LoadBalancing.base_models.each do |model|
Gitlab::Database::LoadBalancing::Setup.new(model).setup
end
end
end
end
Gitlab::Database::LoadBalancing.base_models.each do |model|
......@@ -14,6 +23,12 @@ Gitlab::Database::LoadBalancing.base_models.each do |model|
# information.
Gitlab::Database::LoadBalancing::Setup.new(model).setup
Rails.application.reloader.to_prepare do
if Rails.env.development?
Gitlab::Database::LoadBalancing::Setup.new(model).setup
end
end
# Database queries may be run before we fork, so we must set up the load
# balancer as early as possible. When we do fork, we need to make sure all the
# hosts are disconnected.
......
......@@ -17,6 +17,12 @@ module Gitlab
configure_connection
setup_connection_proxy
setup_service_discovery
::Gitlab::Database::LoadBalancing::Logger.debug(
event: :setup,
model: model.name,
start_service_discovery: @start_service_discovery
)
end
def configure_connection
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment