Commit 61cfda25 authored by Yorick Peterse's avatar Yorick Peterse

Merge branch 'issue-18032' into 'master'

Cache project build count. Closes #18032

See merge request !4377
parents f0d6d711 2605a0a8
...@@ -28,6 +28,7 @@ v 8.9.0 (unreleased) ...@@ -28,6 +28,7 @@ v 8.9.0 (unreleased)
- Make authentication service for Container Registry to be compatible with < Docker 1.11 - Make authentication service for Container Registry to be compatible with < Docker 1.11
- Add Application Setting to configure Container Registry token expire delay (default 5min) - Add Application Setting to configure Container Registry token expire delay (default 5min)
- Cache assigned issue and merge request counts in sidebar nav - Cache assigned issue and merge request counts in sidebar nav
- Cache project build count in sidebar nav
v 8.8.3 v 8.8.3
- Fix incorrect links on pipeline page when merge request created from fork - Fix incorrect links on pipeline page when merge request created from fork
......
...@@ -313,6 +313,7 @@ module Ci ...@@ -313,6 +313,7 @@ module Ci
build_data = Gitlab::BuildDataBuilder.build(self) build_data = Gitlab::BuildDataBuilder.build(self)
project.execute_hooks(build_data.dup, :build_hooks) project.execute_hooks(build_data.dup, :build_hooks)
project.execute_services(build_data.dup, :build_hooks) project.execute_services(build_data.dup, :build_hooks)
project.running_or_pending_build_count(force: true)
end end
def artifacts? def artifacts?
......
...@@ -1011,4 +1011,10 @@ class Project < ActiveRecord::Base ...@@ -1011,4 +1011,10 @@ class Project < ActiveRecord::Base
update_attribute(:pending_delete, true) update_attribute(:pending_delete, true)
end end
def running_or_pending_build_count(force: false)
Rails.cache.fetch(['projects', id, 'running_or_pending_build_count'], force: force) do
builds.running_or_pending.count(:all)
end
end
end end
...@@ -11,4 +11,4 @@ ...@@ -11,4 +11,4 @@
= link_to project_builds_path(@project), title: 'Builds', class: 'shortcuts-builds' do = link_to project_builds_path(@project), title: 'Builds', class: 'shortcuts-builds' do
%span %span
Builds Builds
%span.badge.count.builds_counter= number_with_delimiter(@project.builds.running_or_pending.count(:all)) %span.badge.count.builds_counter= number_with_delimiter(@project.running_or_pending_build_count)
...@@ -24,3 +24,4 @@ Feature: Project Builds Summary ...@@ -24,3 +24,4 @@ Feature: Project Builds Summary
Then recent build has been erased Then recent build has been erased
And recent build summary does not have artifacts widget And recent build summary does not have artifacts widget
And recent build summary contains information saying that build has been erased And recent build summary contains information saying that build has been erased
And the build count cache is updated
...@@ -36,4 +36,8 @@ class Spinach::Features::ProjectBuildsSummary < Spinach::FeatureSteps ...@@ -36,4 +36,8 @@ class Spinach::Features::ProjectBuildsSummary < Spinach::FeatureSteps
expect(page).to have_content 'Build has been erased' expect(page).to have_content 'Build has been erased'
end end
end end
step 'the build count cache is updated' do
expect(@build.project.running_or_pending_build_count).to eq @build.project.builds.running_or_pending.count(:all)
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment