`gitlab:db:validate_config` fails on a Geo secondary with INSERT query in read-only DB
With !89394 (merged), we upsert into ActiveRecord::InternalMetadata
, but on a Geo secondary (when running tracking DB migrations) - this will be read-only so it errors out.
Full stacktrace:
Caused by:
PG::ReadOnlySqlTransaction: ERROR: cannot execute INSERT in a read-only transaction
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/connection_proxy.rb:120:in `block in write_using_load_balancer'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/load_balancer.rb:115:in `block in read_write'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/load_balancer.rb:184:in `retry_with_backoff'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/load_balancer.rb:111:in `read_write'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `write_using_load_balancer'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/load_balancing/connection_proxy.rb:61:in `block (2 levels) in <class:ConnectionProxy>'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db/validate_config.rake:134:in `insert_db_identifier'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db/validate_config.rake:38:in `block (4 levels) in <top (required)>'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db/validate_config.rake:37:in `reverse_each'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/db/validate_config.rake:37:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate:geo => gitlab:db:validate_config
(See full trace by running task with --trace)
This in turn fails gitlab-ctl reconfigure
and Geo secondary upgrades.