summaryrefslogtreecommitdiff
path: root/spec/services/issues
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2018-08-16 12:17:41 +0100
committerSean McGivern <sean@gitlab.com>2018-08-21 12:40:44 +0100
commit2017c5c62abde0d6f24e3afc120365ee1aaaca4b (patch)
tree88aee49fa975ddebc57911c22acad733551cb4fc /spec/services/issues
parent22d8fbacaf153c0b29738e812a22764129483eee (diff)
downloadgitlab-ce-2017c5c62abde0d6f24e3afc120365ee1aaaca4b.tar.gz
Fix routes N+1 in Issues::ReferencedMergeRequestsService#execute
Sorting here needs the project routes to be loaded, including the namespace routes.
Diffstat (limited to 'spec/services/issues')
-rw-r--r--spec/services/issues/referenced_merge_requests_service_spec.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/spec/services/issues/referenced_merge_requests_service_spec.rb b/spec/services/issues/referenced_merge_requests_service_spec.rb
index 0afc8c300f9..3349b97e688 100644
--- a/spec/services/issues/referenced_merge_requests_service_spec.rb
+++ b/spec/services/issues/referenced_merge_requests_service_spec.rb
@@ -35,6 +35,19 @@ describe Issues::ReferencedMergeRequestsService do
expect(mrs).to eq([closing_mr, referencing_mr, closing_mr_other_project, referencing_mr_other_project])
expect(closed_by_mrs).to eq([closing_mr, closing_mr_other_project])
end
+
+ context 'performance' do
+ it 'does not run extra queries when extra namespaces are included', :use_clean_rails_memory_store_caching do
+ service.execute(issue) # warm cache
+ control_count = ActiveRecord::QueryRecorder.new { service.execute(issue) }.count
+
+ third_project = create(:project, :public)
+ create_closing_mr(source_project: third_project)
+ service.execute(issue) # warm cache
+
+ expect { service.execute(issue) }.not_to exceed_query_limit(control_count)
+ end
+ end
end
describe '#referenced_merge_requests' do