diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb index c47714fbd4bb8cfed4e8a038db74f61b922aba9b..1486dd31ebef42317a67964383807a1e36a09860 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?