summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2017-03-16 23:40:14 +0000
committerDouwe Maan <douwe@gitlab.com>2017-03-16 23:40:14 +0000
commit0fa511fdeb5e1089dbd82435cb1397b0d433b00b (patch)
treee8cadc8313ff37f55f335efe223291d515228e55 /app/controllers
parent63292383752560efdce7c64cbbc1ca863a1de3ab (diff)
parent26d3da4bfe5c4718d3dfb4407cee58da53b408aa (diff)
downloadgitlab-ce-0fa511fdeb5e1089dbd82435cb1397b0d433b00b.tar.gz
Merge branch 'fix-slow-queries-for-branches-index' into 'master'
removes n+1 query from tags and branches indexes See merge request !9905
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/projects/branches_controller.rb10
-rw-r--r--app/controllers/projects/tags_controller.rb4
2 files changed, 11 insertions, 3 deletions
diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb
index 22714d9c5a4..840405f38cb 100644
--- a/app/controllers/projects/branches_controller.rb
+++ b/app/controllers/projects/branches_controller.rb
@@ -11,16 +11,18 @@ class Projects::BranchesController < Projects::ApplicationController
@sort = params[:sort].presence || sort_value_name
@branches = BranchesFinder.new(@repository, params).execute
- @branches = Kaminari.paginate_array(@branches).page(params[:page]) unless params[:show_all].present?
-
respond_to do |format|
format.html do
+ paginate_branches
+ @refs_pipelines = @project.pipelines.latest_successful_for_refs(@branches.map(&:name))
+
@max_commits = @branches.reduce(0) do |memo, branch|
diverging_commit_counts = repository.diverging_commit_counts(branch)
[memo, diverging_commit_counts[:behind], diverging_commit_counts[:ahead]].max
end
end
format.json do
+ paginate_branches unless params[:show_all]
render json: @branches.map(&:name)
end
end
@@ -91,6 +93,10 @@ class Projects::BranchesController < Projects::ApplicationController
end
end
+ def paginate_branches
+ @branches = Kaminari.paginate_array(@branches).page(params[:page])
+ end
+
def url_to_autodeploy_setup(project, branch_name)
namespace_project_new_blob_path(
project.namespace,
diff --git a/app/controllers/projects/tags_controller.rb b/app/controllers/projects/tags_controller.rb
index ea7e4d9f663..e13f0bde315 100644
--- a/app/controllers/projects/tags_controller.rb
+++ b/app/controllers/projects/tags_controller.rb
@@ -14,7 +14,9 @@ class Projects::TagsController < Projects::ApplicationController
@tags = TagsFinder.new(@repository, params).execute
@tags = Kaminari.paginate_array(@tags).page(params[:page])
- @releases = project.releases.where(tag: @tags.map(&:name))
+ tag_names = @tags.map(&:name)
+ @tags_pipelines = @project.pipelines.latest_successful_for_refs(tag_names)
+ @releases = project.releases.where(tag: tag_names)
end
def show