summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaco Guzman <pacoguzmanp@gmail.com>2016-08-23 11:27:22 +0200
committerPaco Guzman <pacoguzmanp@gmail.com>2016-08-25 14:42:18 +0200
commit6280fd3777920670ee42111fddf29576cbf85988 (patch)
treedcb44ce2f9fc19fca073d4818d292996749f2461
parent7bbb523b23638c52b3c0ba43d8f3dbef8840aad6 (diff)
downloadgitlab-ce-13912-reduce-pipeline-db-queries.tar.gz
Reduce number of database queries on builds tab13912-reduce-pipeline-db-queries
-rw-r--r--CHANGELOG1
-rw-r--r--app/models/ci/build.rb2
-rw-r--r--app/models/ci/pipeline.rb2
-rw-r--r--app/models/commit_status.rb2
-rw-r--r--app/views/projects/commit/_ci_stage.html.haml4
5 files changed, 7 insertions, 4 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 518e80a360a..dfa8c23fd13 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -12,6 +12,7 @@ v 8.12.0 (unreleased)
v 8.11.2 (unreleased)
- Show "Create Merge Request" widget for push events to fork projects on the source project
+ - Reduce number of database queries on builds tab
v 8.11.1 (unreleased)
- Does not halt the GitHub import process when an error occurs
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 096b3b801af..23c8de6f650 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -352,7 +352,7 @@ module Ci
end
def artifacts?
- !artifacts_expired? && artifacts_file.exists?
+ !artifacts_expired? && self[:artifacts_file].present?
end
def artifacts_metadata?
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 087abe4cbb1..aff908ea16c 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -83,7 +83,7 @@ module Ci
end
def stages_with_latest_statuses
- statuses.latest.order(:stage_idx).group_by(&:stage)
+ statuses.latest.includes(project: :namespace).order(:stage_idx).group_by(&:stage)
end
def project_id
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index 84ceeac7d3e..1b403fa646d 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -25,6 +25,8 @@ class CommitStatus < ActiveRecord::Base
scope :retried, -> { where.not(id: latest) }
scope :ordered, -> { order(:name) }
scope :ignored, -> { where(allow_failure: true, status: [:failed, :canceled]) }
+ scope :latest_ci_stages, -> { latest.ordered.includes(project: :namespace) }
+ scope :retried_ci_stages, -> { retried.ordered.includes(project: :namespace) }
state_machine :status do
event :enqueue do
diff --git a/app/views/projects/commit/_ci_stage.html.haml b/app/views/projects/commit/_ci_stage.html.haml
index 9d925cacc0d..6bb900e3fc1 100644
--- a/app/views/projects/commit/_ci_stage.html.haml
+++ b/app/views/projects/commit/_ci_stage.html.haml
@@ -8,8 +8,8 @@
- if stage
&nbsp;
= stage.titleize
- = render statuses.latest.ordered, coverage: @project.build_coverage_enabled?, stage: false, ref: false, allow_retry: true
- = render statuses.retried.ordered, coverage: @project.build_coverage_enabled?, stage: false, ref: false, retried: true
+ = render statuses.latest_ci_stages, coverage: @project.build_coverage_enabled?, stage: false, ref: false, allow_retry: true
+ = render statuses.retried_ci_stages, coverage: @project.build_coverage_enabled?, stage: false, ref: false, retried: true
%tr
%td{colspan: 10}
&nbsp;