500 error trying to save admin integrations if Elasticsearch is configured but down
Steps to reproduce:
- In
/admin
-> Integrations -> Elasticsearch, enter a valid URL. - Save the settings.
- Bring down Elasticsearch.
- In
/admin
-> Integrations -> PlantUML, enter a valid URL. - Save the settings.
An error 500 is shown:
Faraday::ConnectionFailed - Connection refused - Connection refused - connect(2) for "localhost" port 9200 (localhost:9200):
lib/gitlab/instrumentation/elasticsearch_transport.rb:12:in `perform_request'
lib/gitlab/instrumentation/elasticsearch_transport.rb:12:in `perform_request'
lib/gitlab/instrumentation/elasticsearch_transport.rb:12:in `perform_request'
ee/lib/gitlab/elastic/helper.rb:128:in `index_exists?'
ee/app/services/ee/application_settings/update_service.rb:49:in `find_or_create_index'
ee/app/services/ee/application_settings/update_service.rb:19:in `execute'
app/controllers/admin/application_settings_controller.rb:261:in `perform_update'
app/controllers/admin/application_settings_controller.rb:50:in `block (2 levels) in <class:ApplicationSettingsController>'
ee/lib/gitlab/ip_address_state.rb:10:in `with'
ee/app/controllers/ee/application_controller.rb:44:in `set_current_ip_address'
app/controllers/application_controller.rb:493:in `set_current_admin'
lib/gitlab/session.rb:11:in `with_session'
app/controllers/application_controller.rb:484:in `set_session_storage'
lib/gitlab/i18n.rb:73:in `with_locale'
lib/gitlab/i18n.rb:79:in `with_user_locale'
app/controllers/application_controller.rb:478:in `set_locale'
lib/gitlab/error_tracking.rb:52:in `with_context'
app/controllers/application_controller.rb:543:in `sentry_context'
app/controllers/application_controller.rb:471:in `block in set_current_context'
lib/gitlab/application_context.rb:54:in `block in use'
lib/gitlab/application_context.rb:54:in `use'
lib/gitlab/application_context.rb:21:in `with_context'
app/controllers/application_controller.rb:463:in `set_current_context'
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'
lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'
lib/gitlab/metrics/transaction.rb:61:in `run'
lib/gitlab/metrics/rack_middleware.rb:16:in `call'
lib/gitlab/request_profiler/middleware.rb:17:in `call'
lib/gitlab/query_limiting/middleware.rb:17:in `block in call'
lib/gitlab/query_limiting/transaction.rb:39:in `run'
I think we can skip this check if the Elasticsearch settings aren't changed?
Edited by John McGuire