Failure in enable_sast_from_configuration_spec and clone_using_deploy_key_spec | "no implicit conversion of Symbol into Integer" caused by runner&.remove_via_api! | `/projects/:id/runners/runners?tag_list=qa,docker` returns error 500
Summary
Removing runners fails because the API returns error 500 (which isn't obvious from the test failure)
Affected tests:
- browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb
- ee/browser_ui/secure/enable_sast_from_configuration_spec.rb
- ee/browser_ui/secure/create_merge_request_with_secure_spec.rb
- ee/browser_ui/secure/merge_request_license_widget_spec.rb
E.g:
- https://ops.gitlab.net/gitlab-org/quality/staging/-/jobs/3940562
- https://ops.gitlab.net/gitlab-org/quality/staging/-/jobs/3940565
- https://ops.gitlab.net/gitlab-org/quality/staging/-/jobs/4385431
Stack trace
1) Release Git clone using a deploy key user sets up a deploy key with QA::Runtime::Key::ECDSA(521) to clone code using pipelines
Failure/Error: @runner.remove_via_api!
TypeError:
no implicit conversion of Symbol into Integer
# ./qa/resource/runner.rb:56:in `block in remove_via_api!'
# ./qa/resource/runner.rb:56:in `each'
# ./qa/resource/runner.rb:56:in `find'
# ./qa/resource/runner.rb:56:in `remove_via_api!'
# ./qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb:28:in `block (3 levels) in <module:QA>'
1) Secure Enable SAST from UI runs sast job when enabled from configuration
Failure/Error: runner&.remove_via_api!
TypeError:
no implicit conversion of Symbol into Integer
# ./qa/resource/runner.rb:56:in `block in remove_via_api!'
# ./qa/resource/runner.rb:56:in `each'
# ./qa/resource/runner.rb:56:in `find'
# ./qa/resource/runner.rb:56:in `remove_via_api!'
# ./qa/specs/features/ee/browser_ui/secure/enable_sast_from_configuration_spec.rb:57:in `block (3 levels) in <module:QA>'
Sentry error https://sentry.gitlab.net/gitlab/staginggitlabcom/issues/2726986/?query=is%3Aunresolved
Possible fixes
The API call to /projects/:id/runners/runners?tag_list=qa,docker
returns error 500, but if it's just /projects/:id/runners/runners
it works. It's a DB query timeout (internal).
Our test group has far too many unused runners listed (533) so we (Quality) will need to address that, but the API should handle this situation more gracefully or efficiently.
Edited by Tiffany Rea