summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Niedzielski <adamsunday@gmail.com>2017-01-10 13:30:28 -0500
committerAdam Niedzielski <adamsunday@gmail.com>2017-01-10 13:30:28 -0500
commitb11492c2e36803cf19b175e7d850a72f4e5f9b1f (patch)
tree2b35b31a1a48a03de47d843a68d1547f9b559d55
parentbb02141e417ff21deb7707a806a313545bbdd5af (diff)
downloadgitlab-ce-reduce-queries-milestone-index.tar.gz
Use cached values to compute total issues count in milestone index pagesreduce-queries-milestone-index
Milestoneish#issues_visible_to_user caches only the ActiveRecord relation, not the actual result. Introduce Milestoneish#total_issues_count that relies on the cached method Milestoneish#count_issues_by_state to reduce the number of queries.
-rw-r--r--app/models/concerns/milestoneish.rb7
-rw-r--r--app/views/shared/milestones/_milestone.html.haml2
-rw-r--r--changelogs/unreleased/reduce-queries-milestone-index.yml4
3 files changed, 10 insertions, 3 deletions
diff --git a/app/models/concerns/milestoneish.rb b/app/models/concerns/milestoneish.rb
index fcc8feddb39..e9450dd0c26 100644
--- a/app/models/concerns/milestoneish.rb
+++ b/app/models/concerns/milestoneish.rb
@@ -7,11 +7,14 @@ module Milestoneish
def total_items_count(user)
memoize_per_user(user, :total_items_count) do
- issues_count = count_issues_by_state(user).values.sum
- issues_count + merge_requests.size
+ total_issues_count(user) + merge_requests.size
end
end
+ def total_issues_count(user)
+ count_issues_by_state(user).values.sum
+ end
+
def complete?(user)
total_items_count(user) > 0 && total_items_count(user) == closed_items_count(user)
end
diff --git a/app/views/shared/milestones/_milestone.html.haml b/app/views/shared/milestones/_milestone.html.haml
index 3200aacf542..9e6a76e1ddb 100644
--- a/app/views/shared/milestones/_milestone.html.haml
+++ b/app/views/shared/milestones/_milestone.html.haml
@@ -9,7 +9,7 @@
.pull-right.light #{milestone.percent_complete(current_user)}% complete
.row
.col-sm-6
- = link_to pluralize(milestone.issues_visible_to_user(current_user).size, 'Issue'), issues_path
+ = link_to pluralize(milestone.total_issues_count(current_user), 'Issue'), issues_path
&middot;
= link_to pluralize(milestone.merge_requests.size, 'Merge Request'), merge_requests_path
.col-sm-6= milestone_progress_bar(milestone)
diff --git a/changelogs/unreleased/reduce-queries-milestone-index.yml b/changelogs/unreleased/reduce-queries-milestone-index.yml
new file mode 100644
index 00000000000..a779b58c973
--- /dev/null
+++ b/changelogs/unreleased/reduce-queries-milestone-index.yml
@@ -0,0 +1,4 @@
+---
+title: Use cached values to compute total issues count in milestone index pages
+merge_request: 8518
+author: