[go: up one dir, main page]

Skip to content

Editing merge request results in 404 if approval rules are changed

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Summary

In cases where the same MR is edited, and the approval rules are removed, the "Save Changes" button will result in a 404.

Steps to reproduce

  • Create merge request
  • Set up approval rules
  • Edit merge request
  • From a different tab, remove the approval rules or update them
  • Submit previous changes

A 404 will be returned and an exception will be logged saying:

"Couldn't find ApprovalMergeRequestRule with ID= for MergeRequest with ID="

Example Project

N/A, can be reproduced in .com

What is the current bug behavior?

404

What is the expected correct behavior?

If changes happen to an MR that's being edited, these should result in a notification prompting the user to refresh the MR

Relevant logs and/or screenshots

Backtrace from .com (Correlation ID 01JMJTBBKJSWCA38ZMJTE5WHPS):

[app/services/issuable_base_service.rb:294:in `update',
app/services/merge_requests/base_service.rb:155:in `update',
app/services/merge_requests/update_service.rb:134:in `general_fallback',
ee/app/services/ee/merge_requests/update_service.rb:27:in `general_fallback',
app/services/merge_requests/update_service.rb:23:in `execute',
app/controllers/projects/merge_requests_controller.rb:247:in `update',
lib/gitlab/ip_address_state.rb:11:in `with',
ee/app/controllers/ee/application_controller.rb:45:in `set_current_ip_address',
app/controllers/application_controller.rb:491:in `set_current_admin',
lib/gitlab/session.rb:11:in `with_session',
app/controllers/application_controller.rb:482:in `set_session_storage',
lib/gitlab/i18n.rb:114:in `with_locale',
lib/gitlab/i18n.rb:120:in `with_user_locale',
app/controllers/application_controller.rb:473:in `set_locale',
app/controllers/application_controller.rb:466:in `set_current_context',
lib/gitlab/middleware/action_controller_static_context.rb:23:in `call',
ee/lib/omni_auth/strategies/group_saml.rb:41:in `other_phase',
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call',
lib/gitlab/middleware/sidekiq_shard_awareness_validation.rb:20:in `block in call',
lib/gitlab/sidekiq_sharding/validator.rb:42:in `enabled',
lib/gitlab/middleware/sidekiq_shard_awareness_validation.rb:20:in `call',
lib/gitlab/middleware/memory_report.rb:13:in `call',
lib/gitlab/middleware/speedscope.rb:13:in `call',
lib/gitlab/database/load_balancing/rack_middleware.rb:23:in `call',
lib/gitlab/middleware/rails_queue_duration.rb:33:in `call',
lib/gitlab/etag_caching/middleware.rb:21:in `call',
lib/gitlab/metrics/rack_middleware.rb:16:in `block in call',
lib/gitlab/metrics/web_transaction.rb:46:in `run',
lib/gitlab/metrics/rack_middleware.rb:16:in `call',
lib/gitlab/middleware/go.rb:21:in `call',
lib/gitlab/middleware/query_analyzer.rb:11:in `block in call',
lib/gitlab/database/query_analyzer.rb:83:in `within',
lib/gitlab/middleware/query_analyzer.rb:11:in `call',
lib/ci/job_token/middleware.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/unauthenticated_session_expiry.rb:18:in `call',
lib/gitlab/middleware/same_site_cookies.rb:27:in `call',
lib/gitlab/middleware/path_traversal_check.rb:40: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: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:44: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:83:in `call',
lib/gitlab/middleware/release_env.rb:12:in `call'] 

Output of checks

This bug happens on GitLab.com

Possible fixes

Prompt user to fetch and review MR changes

Edited by 🤖 GitLab Bot 🤖