summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2018-03-19 16:01:40 +0000
committerRobert Speicher <robert@gitlab.com>2018-03-19 16:01:40 +0000
commita520ab64db0ba9815627c197c60139d1a9a5c6d4 (patch)
treedca422e65a46d7dbe2fb03ced7066ab27799f113
parent736541f53c4dff3aa0cd763d1ccbf550a4845abc (diff)
parent48f0eff37ab74ba4409dd28c5003898e2272a010 (diff)
downloadgitlab-ce-a520ab64db0ba9815627c197c60139d1a9a5c6d4.tar.gz
Merge branch 'sh-admin-projects-remove-n-plus-one' into 'master'
Remove N+1 queries in /admin/projects page See merge request gitlab-org/gitlab-ce!17834
-rw-r--r--app/finders/admin/projects_finder.rb1
-rw-r--r--spec/controllers/admin/projects_controller_spec.rb10
2 files changed, 11 insertions, 0 deletions
diff --git a/app/finders/admin/projects_finder.rb b/app/finders/admin/projects_finder.rb
index 5c507fe8d50..2c8f21c2400 100644
--- a/app/finders/admin/projects_finder.rb
+++ b/app/finders/admin/projects_finder.rb
@@ -16,6 +16,7 @@ class Admin::ProjectsFinder
items = by_archived(items)
items = by_personal(items)
items = by_name(items)
+ items = items.includes(namespace: [:owner])
sort(items).page(params[:page])
end
diff --git a/spec/controllers/admin/projects_controller_spec.rb b/spec/controllers/admin/projects_controller_spec.rb
index d5a3c250f31..cc200b9fed9 100644
--- a/spec/controllers/admin/projects_controller_spec.rb
+++ b/spec/controllers/admin/projects_controller_spec.rb
@@ -31,5 +31,15 @@ describe Admin::ProjectsController do
expect(response.body).not_to match(pending_delete_project.name)
expect(response.body).to match(project.name)
end
+
+ it 'does not have N+1 queries', :use_clean_rails_memory_store_caching, :request_store do
+ get :index
+
+ control_count = ActiveRecord::QueryRecorder.new { get :index }.count
+
+ create(:project)
+
+ expect { get :index }.not_to exceed_query_limit(control_count)
+ end
end
end