From ef526ff33c01d75af5d24e4f13630213815d74d3 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 10 Jul 2017 13:56:46 -0700 Subject: Paginate the merge requests API earlier to avoid eager loading every merge request Fixes a performance regression introduced in !12732 --- lib/api/merge_requests.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 4ad1eef4ff1..9fd557e9cda 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -44,6 +44,7 @@ module API args[:label_name] = args.delete(:labels) merge_requests = MergeRequestsFinder.new(current_user, args).execute + merge_requests = paginate(merge_requests) .preload(:notes, :target_project, :author, :assignee, :milestone, :merge_request_diff, :labels) merge_requests.reorder(args[:order_by] => args[:sort]) @@ -85,7 +86,7 @@ module API merge_requests = find_merge_requests(project_id: user_project.id) issuable_metadata = issuable_meta_data(merge_requests, 'MergeRequest') - present paginate(merge_requests), with: Entities::MergeRequestBasic, current_user: current_user, project: user_project, issuable_metadata: issuable_metadata + present merge_requests, with: Entities::MergeRequestBasic, current_user: current_user, project: user_project, issuable_metadata: issuable_metadata end desc 'Create a merge request' do -- cgit v1.2.1 From 1f0ee9ca1912e6ea73015c5edd910b489e9c21a0 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 10 Jul 2017 15:05:56 -0700 Subject: Fix sort ordering with merge request API --- lib/api/merge_requests.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 9fd557e9cda..1a3fdb66f3f 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -44,10 +44,9 @@ module API args[:label_name] = args.delete(:labels) merge_requests = MergeRequestsFinder.new(current_user, args).execute - merge_requests = paginate(merge_requests) - .preload(:notes, :target_project, :author, :assignee, :milestone, :merge_request_diff, :labels) - - merge_requests.reorder(args[:order_by] => args[:sort]) + merge_requests = merge_requests.reorder(args[:order_by] => args[:sort]) + paginate(merge_requests) + .preload(:notes, :target_project, :author, :assignee, :milestone, :merge_request_diff, :labels) end params :optional_params_ce do -- cgit v1.2.1