Raise Exception instead of StandardError for early transaction exits
What does this MR do and why?
Raising an Exception
instead of DeprecationException
or
StandardError
increases the probability that this exception is not
caught in application code.
Follow-up of !122585 (merged). Refs to #410086 (closed).
How to set up and validate locally
bin/rspec --order defined spec/requests/api/commit_statuses_spec.rb -e 'when the `state` parameter is sent the same'
Failures:
1) API::CommitStatuses POST /projects/:id/statuses/:sha developer user with all optional parameters when updating a commit status when the `state` parameter is sent the same does not update the commit status
Failure/Error: connection.public_send(...)
Exception:
DEPRECATION WARNING: Using `return`, `break` or `throw` to exit a transaction block is
deprecated without replacement. If the `throw` came from
`Timeout.timeout(duration)`, pass an exception class as a second
argument so it doesn't use `throw` to abort its block. This results
in the transaction being committed, but in the next release of Rails
it will rollback.
(called from public_send at /home/peter/devel/gitlab/gdk/gitlab/lib/gitlab/database/load_balancing/connection_proxy.rb:127)
# ./config/initializers/00_deprecations.rb:26:in `block in <main>'
# ./lib/gitlab/database/load_balancing/connection_proxy.rb:127:in `public_send'
# ./lib/gitlab/database/load_balancing/connection_proxy.rb:127:in `block in write_using_load_balancer'
# ./lib/gitlab/database/load_balancing/load_balancer.rb:127:in `block in read_write'
# ./lib/gitlab/database/load_balancing/load_balancer.rb:198:in `retry_with_backoff'
# ./lib/gitlab/database/load_balancing/load_balancer.rb:116:in `read_write'
# ./lib/gitlab/database/load_balancing/connection_proxy.rb:126:in `write_using_load_balancer'
# ./lib/gitlab/database/load_balancing/connection_proxy.rb:78:in `transaction'
# ./lib/gitlab/database.rb:385:in `block in transaction'
# ./lib/gitlab/database.rb:384:in `transaction'
# ./app/models/concerns/cross_database_modification.rb:83:in `transaction'
# ./app/services/ci/pipelines/add_job_service.rb:20:in `block in execute!'
# ./lib/gitlab/exclusive_lease_helpers.rb:38:in `in_lock'
# ./app/services/ci/pipelines/add_job_service.rb:19:in `execute!'
# ./lib/api/commit_statuses.rb:137:in `block (2 levels) in <class:CommitStatuses>'
# ./ee/lib/gitlab/middleware/ip_restrictor.rb:14:in `block in call'
# ./ee/lib/gitlab/ip_address_state.rb:10:in `with'
# ./ee/lib/gitlab/middleware/ip_restrictor.rb:13:in `call'
# ./lib/api/api_guard.rb:219:in `call'
# ./lib/gitlab/middleware/memory_report.rb:13:in `call'
# ./lib/gitlab/middleware/speedscope.rb:13:in `call'
# ./lib/gitlab/query_limiting/middleware.rb:17:in `block in call'
# ./lib/gitlab/query_limiting/transaction.rb:45:in `run'
# ./lib/gitlab/query_limiting/middleware.rb:16:in `call'
# ./lib/gitlab/database/load_balancing/rack_middleware.rb:23: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/query_analyzer.rb:11:in `block in call'
# ./lib/gitlab/database/query_analyzer.rb:37:in `within'
# ./lib/gitlab/middleware/query_analyzer.rb:11:in `call'
# ./lib/gitlab/middleware/multipart.rb:173: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/basic_health_check.rb:25:in `call'
# ./lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'
# ./lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'
# ./lib/gitlab/middleware/request_context.rb:15:in `call'
# ./lib/gitlab/middleware/webhook_recursion_detection.rb:15:in `call'
# ./config/initializers/fix_local_cache_middleware.rb:11:in `call'
# ./lib/gitlab/middleware/compressed_json.rb:45:in `call'
# ./lib/gitlab/middleware/static.rb:11:in `call'
# ./lib/gitlab/webpack/dev_server_middleware.rb:34:in `perform_request'
# ./lib/gitlab/testing/clear_process_memory_cache_middleware.rb:13:in `call'
# ./lib/gitlab/testing/request_inspector_middleware.rb:35:in `call'
# ./lib/gitlab/testing/robots_blocker_middleware.rb:30:in `call'
# ./lib/gitlab/testing/request_blocker_middleware.rb:47:in `call'
# ./lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call'
# ./lib/gitlab/middleware/sidekiq_web_static.rb:20:in `call'
# ./lib/gitlab/metrics/requests_rack_middleware.rb:79:in `call'
# ./spec/requests/api/commit_statuses_spec.rb:332:in `block (6 levels) in <top (required)>'
# ./spec/requests/api/commit_statuses_spec.rb:365:in `block (7 levels) in <top (required)>'
# ./spec/spec_helper.rb:415:in `block (3 levels) in <top (required)>'
# ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'
# ./spec/spec_helper.rb:406:in `block (2 levels) in <top (required)>'
# ./spec/spec_helper.rb:402:in `block (3 levels) in <top (required)>'
# ./lib/gitlab/application_context.rb:61:in `with_raw_context'
# ./spec/spec_helper.rb:402:in `block (2 levels) in <top (required)>'
# ./spec/spec_helper.rb:243:in `block (2 levels) in <top (required)>'
# ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <main>'
# ./spec/support/database/prevent_cross_joins.rb:108:in `block (3 levels) in <main>'
# ./spec/support/database/prevent_cross_joins.rb:62:in `with_cross_joins_prevented'
# ./spec/support/database/prevent_cross_joins.rb:108:in `block (2 levels) in <main>'
Finished in 12.34 seconds (files took 10.69 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/requests/api/commit_statuses_spec.rb:364 # API::CommitStatuses POST /projects/:id/statuses/:sha developer user with all optional parameters when updating a commit status when the `state` parameter is sent the same does not update the commit status
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Peter Leitzen