summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Newdigate <andrew@gitlab.com>2017-10-02 20:16:02 +0100
committerAndrew Newdigate <andrew@gitlab.com>2017-10-02 20:16:02 +0100
commitee6d0162633b8ebef7b21de6f849d7788a557ae1 (patch)
treee2cd414418f52f6e01a65118ee5415044cb226cd
parentfd8c56008fdadf45bd2ed1e0c50fbea51424a176 (diff)
downloadgitlab-ce-an_noteable_grouped_diff_discussions_n_plus_one_exclusion.tar.gz
Workaround for https://gitlab.com/gitlab-org/gitlab-ce/issues/38688an_noteable_grouped_diff_discussions_n_plus_one_exclusion
-rw-r--r--app/models/note.rb15
1 files changed, 9 insertions, 6 deletions
diff --git a/app/models/note.rb b/app/models/note.rb
index f44590e2144..2d2847401f2 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -137,12 +137,15 @@ class Note < ActiveRecord::Base
def grouped_diff_discussions(diff_refs = nil)
groups = {}
- diff_notes.fresh.discussions.each do |discussion|
- line_code = discussion.line_code_in_diffs(diff_refs)
-
- if line_code
- discussions = groups[line_code] ||= []
- discussions << discussion
+ # n+1: https://gitlab.com/gitlab-org/gitlab-ce/issues/38688
+ Gitlab::GitalyClient.allow_n_plus_1_calls do
+ diff_notes.fresh.discussions.each do |discussion|
+ line_code = discussion.line_code_in_diffs(diff_refs)
+
+ if line_code
+ discussions = groups[line_code] ||= []
+ discussions << discussion
+ end
end
end