Fix reconfigure failure if Redis node has Rails Sentinel config

https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/7500
introduced a regression when a node with a managed Redis node has
Sentinels configured in `gitlab_rails` section. Previously the
`redis['default_host']` would only be set if
`gitlab_rails['redis_sentinels']` were empty.

Relates to
https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/8465#note_1879691545

Changelog: fixed
This commit is contained in:
Stan Hu 2024-04-24 20:48:29 -07:00
parent 1f0bfa5da5
commit 1c579dae4d
No known key found for this signature in database
GPG Key ID: 8D3931AD39CC7A20
2 changed files with 35 additions and 1 deletions

View File

@ -30,6 +30,7 @@ module Redis
# The user wants Redis to listen via TCP instead of unix socket.
Gitlab['redis']['unixsocket'] = false
parse_redis_bind_address
# Try to discover gitlab_rails redis connection params
# based on redis daemon
parse_redis_daemon! unless RedisHelper::Checks.has_sentinels?
@ -74,12 +75,17 @@ module Redis
private
def parse_redis_daemon!
def parse_redis_bind_address
return unless redis_managed?
redis_bind = Gitlab['redis']['bind'] || node['redis']['bind']
Gitlab['redis']['default_host'] = redis_bind.split(' ').first
end
def parse_redis_daemon!
return unless redis_managed?
redis_bind = Gitlab['redis']['bind'] || node['redis']['bind']
Gitlab['gitlab_rails']['redis_host'] ||= Gitlab['redis']['default_host']
redis_port_config_key = if Gitlab['redis'].key?('port') && !Gitlab['redis']['port'].zero?

View File

@ -332,6 +332,34 @@ redis_socket=''
expect(chef_run).to render_file('/opt/gitlab/etc/gitlab-redis-cli-rc')
.with_content(gitlab_redis_cli_rc)
end
context 'with Sentinels configured' do
before do
stub_gitlab_rb(
redis: {
bind: redis_host,
port: redis_port,
ha: true,
master_ip: master_ip,
master_port: master_port,
master_password: 'password',
master: false
},
gitlab_rails: {
redis_sentinels: [
{ 'host' => '127.0.0.1', 'port' => 2637 }
]
}
)
end
it_behaves_like 'started down runit service', 'redis'
it 'creates gitlab-redis-cli-rc' do
expect(chef_run).to render_file('/opt/gitlab/etc/gitlab-redis-cli-rc')
.with_content(gitlab_redis_cli_rc)
end
end
end
context 'with rename_commands disabled' do