Dynamically read pool sizes for LB configurations
What does this MR do and why?
In various places we update the pool size to use for the database, then reconnect. The global instance of Gitlab::Database::LoadBalancing::Configuration is memoized, and may be read before the pool size is updated. This can result in the pool size being out of date, if database.yml uses a value different from the one GitLab wants.
To work around this, LoadBalancing::Configuration#pool_size now always reads the value from the underlying model. All other LB settings are still persisted in-memory, as we don't support changing these at runtime anyway.
MR acceptance checklist
Quality
-
Quality checklist confirmed
Performance, reliability, and availability
-
Performance, reliability, and availability checklist confirmed
Documentation
-
Documentation checklist confirmed
Security
-
Security checklist confirmed
Deployment
-
Deployment checklist confirmed