Geo: `gitlab-ctl show-config` doesn't work on secondary sites
Summary
running gitlab-ctl show-config on Geo secondary sites fail due to unhandled nil case.
Steps to reproduce
- Go to a single instance Geo secondary site
- Run
gitlab-ctl show-config - You should get a chef-client execution failure
What is the current bug behavior?
Chef fails to execute the show-config recipe with a nil related error.
What is the expected correct behavior?
It should display the configuration as json output
Relevant logs
Relevant logs
Starting Chef Infra Client, version 15.17.4
resolving cookbooks for run list: ["gitlab::show_config"]
Synchronizing Cookbooks:
- gitlab (0.0.1)
- package (0.1.0)
- logrotate (0.1.0)
- postgresql (0.1.0)
- redis (0.1.0)
- monitoring (0.1.0)
- registry (0.1.0)
- mattermost (0.1.0)
- consul (0.1.0)
- gitaly (0.1.0)
- praefect (0.1.0)
- gitlab-kas (0.1.0)
- gitlab-pages (0.1.0)
- nginx (0.1.0)
- letsencrypt (0.1.0)
- runit (5.1.3)
- acme (4.1.3)
- crond (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
================================================================================
Recipe Compile Error in /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/recipes/show_config.rb
================================================================================
NoMethodError
-------------
undefined method `[]' for nil:NilClass
Cookbook Trace:
---------------
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:44:in `block in rails_needed?'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:40:in `each'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:40:in `rails_needed?'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:31:in `load_role'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/settings_dsl.rb:163:in `block in load_roles'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/settings_dsl.rb:161:in `each'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/settings_dsl.rb:161:in `load_roles'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/settings_dsl.rb:182:in `generate_config'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/recipes/show_config.rb:23:in `from_file'
Relevant File Content:
----------------------
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:
37:
38: # If a service is explicitly set, it will be set in Gitlab[svc]['enable'].
39: # If it us auto-enabled, it will be set to true in Gitlab[:node][svc]['enable']
40: %w(puma sidekiq geo_logcursor).each do |svc|
41: # If the service is explicitly enabled
42: return true if Gitlab[svc]['enable']
43: # If the service is auto-enabled, and not explicitly disabled
44>> return true if Gitlab[:node]['gitlab'][svc.tr('_', '-')]['enable'] && Gitlab[svc]['enable'].nil?
45: end
46:
47: return true if Gitlab['gitaly']['enable'] || (Gitlab[:node]['gitaly']['enable'] && Gitlab['gitaly']['enable'].nil?)
48:
49: false
50: end
51:
52: # running as a secondary requires several additional processes (geo-postgresql, geo-logcursor, etc).
53: # allow more memory for them by reducing the number of Puma workers. Each one is minimum
System Info:
------------
chef_version=15.17.4
platform=ubuntu
platform_version=20.04
ruby=ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
program_name=/opt/gitlab/embedded/bin/chef-client
executable=/opt/gitlab/embedded/bin/chef-client
================================================================================
Recipe Compile Error in /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/recipes/show_config.rb
================================================================================
NoMethodError
-------------
undefined method `[]' for nil:NilClass
Cookbook Trace:
---------------
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:44:in `block in rails_needed?'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:40:in `each'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:40:in `rails_needed?'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:31:in `load_role'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/settings_dsl.rb:163:in `block in load_roles'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/settings_dsl.rb:161:in `each'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/settings_dsl.rb:161:in `load_roles'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/settings_dsl.rb:182:in `generate_config'
/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/recipes/show_config.rb:23:in `from_file'
Relevant File Content:
----------------------
/opt/gitlab/embedded/cookbooks/cache/cookbooks/package/libraries/config/roles/geo_secondary.rb:
37:
38: # If a service is explicitly set, it will be set in Gitlab[svc]['enable'].
39: # If it us auto-enabled, it will be set to true in Gitlab[:node][svc]['enable']
40: %w(puma sidekiq geo_logcursor).each do |svc|
41: # If the service is explicitly enabled
42: return true if Gitlab[svc]['enable']
43: # If the service is auto-enabled, and not explicitly disabled
44>> return true if Gitlab[:node]['gitlab'][svc.tr('_', '-')]['enable'] && Gitlab[svc]['enable'].nil?
45: end
46:
47: return true if Gitlab['gitaly']['enable'] || (Gitlab[:node]['gitaly']['enable'] && Gitlab['gitaly']['enable'].nil?)
48:
49: false
50: end
51:
52: # running as a secondary requires several additional processes (geo-postgresql, geo-logcursor, etc).
53: # allow more memory for them by reducing the number of Puma workers. Each one is minimum
System Info:
------------
chef_version=15.17.4
platform=ubuntu
platform_version=20.04
ruby=ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
program_name=/opt/gitlab/embedded/bin/chef-client
executable=/opt/gitlab/embedded/bin/chef-client
Running handlers:
There was an error running gitlab-ctl reconfigure:
undefined method `[]' for nil:NilClass
Running handlers complete
Chef Infra Client failed. 0 resources updated in 05 seconds
Edited by Gabriel Mazetto