diff options
author | Robert Speicher <robert@gitlab.com> | 2018-03-19 16:01:40 +0000 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2018-03-19 12:41:07 -0500 |
commit | 337403df4cca27a5520170efcd6882762c0b56c1 (patch) | |
tree | 39b4c1b808edc69a0d4261cffec760c0782e7575 | |
parent | fb3ecaf17390707c83e99baec4cbdd19f4ce6154 (diff) | |
download | gitlab-ce-337403df4cca27a5520170efcd6882762c0b56c1.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.rb | 1 | ||||
-rw-r--r-- | spec/controllers/admin/projects_controller_spec.rb | 10 |
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 |