diff options
author | Paco Guzman <pacoguzmanp@gmail.com> | 2016-08-01 16:55:51 +0200 |
---|---|---|
committer | Paco Guzman <pacoguzmanp@gmail.com> | 2016-08-02 16:04:15 +0200 |
commit | 8716ff7f63fff0b056e110bef930c32a98e86c63 (patch) | |
tree | 0c00cc19b1cfff77eb1472840ed456e852fbfc49 /app/models/discussion.rb | |
parent | aac8dcf12cdd5b102b220d9b2f5dded2d1362ffc (diff) | |
download | gitlab-ce-8716ff7f63fff0b056e110bef930c32a98e86c63.tar.gz |
Speedup DiffNote#active? on discussions, preloading noteables and avoid touching git repository to return diff_refs when possible
- Preloading noteable we share the same noteable instance when more than one
discussion refers to the same noteable.
- Any other call to that object that is cached in that object will be for any
discussion.
- In those cases where merge_request_diff has all the sha stored to build a diff_refs get that
diff_refs using directly those sha instead accessing to the git repository to first get the
commits and later the sha.
Diffstat (limited to 'app/models/discussion.rb')
-rw-r--r-- | app/models/discussion.rb | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/app/models/discussion.rb b/app/models/discussion.rb index 74facfd1c9c..e2218a5f02b 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -49,6 +49,12 @@ class Discussion self.noteable == target && !diff_discussion? end + def active? + return @active if defined?(@active) + + @active = first_note.active? + end + def expanded? !diff_discussion? || active? end |