Import groups from another instance of Gitlab fails for instance with relative url

Summary

Bulk group import will fail when connecting gitlab instance with relative url configuration

Steps to reproduce

  1. Open Import Group window
  2. Use gitlab instance with relative url configuration for GitLab source URL
  3. Connect instance

What is the current bug behavior?

Status page returns no projects to import

What is the expected correct behavior?

Status page should return projects to import or at least some error message which would indicate that it failed retrieving groups and not that there are no groups to import

Relevant logs and/or screenshots

Screenshot_2021-05-07_at_14.47.31


Screenshot_2021-05-07_at_14.10.07


Screenshot_2021-05-07_at_14.39.35

{"error":{"message":"Unable to connect to server: Failed to open TCP connection to 127.0.0.1:52591 (Connection refused - connect(2) for \"127.0.0.1\" port 52591)","redirect":"/relative/groups/new"}}
{"severity":"ERROR","time":"2021-05-07T10:28:37.270Z","correlation_id":"01F535YF6105R9CGMB75BTFP1A","exception.class":"Errno::ECONNREFUSED","exception.message":"Failed to open TCP connection to 127.0.0.1:52591 (Connection refused - connect(2) for \"127.0.0.1\" port 52591)","exception.backtrace":["lib/gitlab/http.rb:44:in `perform_request'","lib/bulk_imports/clients/http.rb:22:in `block in get'","lib/bulk_imports/clients/http.rb:64:in `with_error_handling'","lib/bulk_imports/clients/http.rb:21:in `get'","app/controllers/import/bulk_imports_controller.rb:70:in `importable_data'","app/controllers/import/bulk_imports_controller.rb:25:in `block (2 levels) in status'","app/controllers/import/bulk_imports_controller.rb:23:in `status'","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:485:in `set_current_admin'","lib/gitlab/session.rb:11:in `with_session'","app/controllers/application_controller.rb:476: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:470:in `set_locale'","app/controllers/application_controller.rb:463:in `block in set_current_context'","lib/gitlab/application_context.rb:70:in `block in use'","lib/gitlab/application_context.rb:70:in `use'","lib/gitlab/application_context.rb:27:in `with_context'","app/controllers/application_controller.rb:454: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:56:in `run'","lib/gitlab/metrics/rack_middleware.rb:16:in `call'","lib/gitlab/middleware/speedscope.rb:13:in `call'","lib/gitlab/request_profiler/middleware.rb:17:in `call'","lib/gitlab/jira/middleware.rb:19:in `call'","lib/gitlab/middleware/go.rb:20:in `call'","lib/gitlab/etag_caching/middleware.rb:21:in `call'","lib/gitlab/middleware/multipart.rb:172:in `call'","lib/gitlab/middleware/read_only/controller.rb:50:in `call'","lib/gitlab/middleware/read_only.rb:18:in `call'","lib/gitlab/middleware/same_site_cookies.rb:27:in `call'","lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'","lib/gitlab/middleware/basic_health_check.rb:25:in `call'","lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'","lib/gitlab/middleware/request_context.rb:21:in `call'","config/initializers/fix_local_cache_middleware.rb:11:in `call'","lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call'","lib/gitlab/metrics/requests_rack_middleware.rb:76:in `call'","lib/gitlab/middleware/release_env.rb:12:in `call'"],"user.username":"qa-user-5ba09f60b981ea4e","tags.program":"web","tags.locale":"en","tags.feature_category":"importers","tags.correlation_id":"01F535YF6105R9CGMB75BTFP1A"}

Possible fixes

It seems that issue would be related to base_uri construction in lib/bulk_imports/clients/http.rb:74 as it will strip the relative part of url passed.

Edited by andrey