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 🤖