Time limit database lock when rebasing a merge request
`MergeRequest#rebase_async` can lock indefinitely with a SELECT FOR UPDATE call. If an update is idle in transaction or another rebase attempts to run, `MergeRequest#rebase_async` could queue indefinitely or until statement timeouts are triggered. To limit the impact of this operation, we now just bail out after 5 s if we can't get the lock. The user will see an error message if this happens. Part of https://gitlab.com/gitlab-org/gitlab/issues/30528
显示
- Gemfile 2 个添加, 0 个删除Gemfile
- Gemfile.lock 1 个添加, 0 个删除Gemfile.lock
- app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue 6 个添加, 2 个删除...rge_request_widget/components/states/mr_widget_rebase.vue
- app/controllers/projects/merge_requests_controller.rb 2 个添加, 0 个删除app/controllers/projects/merge_requests_controller.rb
- app/models/merge_request.rb 29 个添加, 3 个删除app/models/merge_request.rb
- changelogs/unreleased/sh-time-limit-merge-rebase-lock.yml 5 个添加, 0 个删除changelogs/unreleased/sh-time-limit-merge-rebase-lock.yml
- lib/api/merge_requests.rb 2 个添加, 0 个删除lib/api/merge_requests.rb
- locale/gitlab.pot 3 个添加, 0 个删除locale/gitlab.pot
- spec/controllers/projects/merge_requests_controller_spec.rb 27 个添加, 0 个删除spec/controllers/projects/merge_requests_controller_spec.rb
- spec/models/merge_request_spec.rb 7 个添加, 0 个删除spec/models/merge_request_spec.rb
- spec/requests/api/merge_requests_spec.rb 10 个添加, 0 个删除spec/requests/api/merge_requests_spec.rb
加载中
想要评论请 注册 或 登录