From 1b17846e35a7d9fbc0d69138138106cf1092d46f Mon Sep 17 00:00:00 2001 From: Marc Shaw Date: Mon, 4 Aug 2025 17:45:55 +0200 Subject: [PATCH] Batch load merge requests for checking post merged manually MR: gitlab.com/gitlab-org/gitlab/-/merge_requests/200225 --- .../merge_requests/refresh_service.rb | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb index c47714fbd4bb8c..1486dd31ebef42 100644 --- a/app/services/merge_requests/refresh_service.rb +++ b/app/services/merge_requests/refresh_service.rb @@ -91,16 +91,20 @@ def close_upon_missing_source_branch_ref # rubocop: disable CodeReuse/ActiveRecord def post_merge_manually_merged commit_ids = @commits.map(&:id) - merge_requests = @project.merge_requests.opened - .preload_project_and_latest_diff - .preload_latest_diff_commit - .where(target_branch: @push.branch_name).to_a - .select(&:diff_head_commit) - .select do |merge_request| - commit_ids.include?(merge_request.diff_head_sha) && - merge_request.merge_request_diff.state != 'empty' - end - merge_requests = filter_merge_requests(merge_requests) + merge_requests = [] + + @project.merge_requests.opened.each_batch(of: 500) do |mrs| + merge_requests << mrs.preload_project_and_latest_diff + .preload_latest_diff_commit + .where(target_branch: @push.branch_name).to_a + .select(&:diff_head_commit) + .select do |merge_request| + commit_ids.include?(merge_request.diff_head_sha) && + merge_request.merge_request_diff.state != 'empty' + end + end + + merge_requests = filter_merge_requests(merge_requests.flatten) return if merge_requests.empty? -- GitLab