diff options
author | Sean McGivern <sean@gitlab.com> | 2018-03-14 16:03:10 +0000 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2018-03-15 11:49:53 +0000 |
commit | 6cd7f679d065e08f58d6dc9e2debf4f1a9cbcbe1 (patch) | |
tree | 4604c6844e21e61417e2ba7b815f6ac46ad35937 /app/services/merge_requests | |
parent | feb95ce3412ae3ab8b2c990b8ddf64d8d8945670 (diff) | |
download | gitlab-ce-6cd7f679d065e08f58d6dc9e2debf4f1a9cbcbe1.tar.gz |
Only cache highlight results for latest MR diffs
Previously, we kept them all in the cache. We don't need the highlight results
for older diffs - if someone does view that (which is rare), we can do the
highlighting on the fly.
Diffstat (limited to 'app/services/merge_requests')
-rw-r--r-- | app/services/merge_requests/merge_request_diff_cache_service.rb | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/app/services/merge_requests/merge_request_diff_cache_service.rb b/app/services/merge_requests/merge_request_diff_cache_service.rb index 2945a7fd4e4..10aa9ae609c 100644 --- a/app/services/merge_requests/merge_request_diff_cache_service.rb +++ b/app/services/merge_requests/merge_request_diff_cache_service.rb @@ -1,8 +1,17 @@ module MergeRequests class MergeRequestDiffCacheService - def execute(merge_request) + def execute(merge_request, new_diff) # Executing the iteration we cache all the highlighted diff information merge_request.diffs.diff_files.to_a + + # Remove cache for all diffs on this MR. Do not use the association on the + # model, as that will interfere with other actions happening when + # reloading the diff. + MergeRequestDiff.where(merge_request: merge_request).each do |merge_request_diff| + next if merge_request_diff == new_diff + + merge_request_diff.diffs.clear_cache! + end end end end |