Skip to content
Snippets Groups Projects
Commit fc4a0cd0 authored by Oswaldo Ferreir's avatar Oswaldo Ferreir
Browse files

Only serializes diff files found by paths query

parent abae261b
No related branches found
No related tags found
1 merge request!10495Merge Requests - Assignee
Loading
Loading
@@ -249,15 +249,13 @@ class MergeRequestDiff < ActiveRecord::Base
end
 
def load_diffs(options)
raw = merge_request_diff_files.map(&:to_hash)
collection = merge_request_diff_files
 
if paths = options[:paths]
raw = raw.select do |diff|
paths.include?(diff[:old_path]) || paths.include?(diff[:new_path])
end
collection = collection.where('old_path IN (?) OR new_path IN (?)', paths, paths)
end
 
Gitlab::Git::DiffCollection.new(raw, options)
Gitlab::Git::DiffCollection.new(collection.map(&:to_hash), options)
end
 
def load_commits
Loading
Loading
---
title: Improve performance when fetching collapsed diffs and commenting in merge requests
merge_request: 20940
author:
type: performance
Loading
Loading
@@ -127,6 +127,13 @@ describe MergeRequestDiff do
expect(diffs.map(&:new_path)).to contain_exactly('files/ruby/popen.rb')
end
 
it 'only serializes diff files found by query' do
expect(diff_with_commits.merge_request_diff_files.count).to be > 10
expect_any_instance_of(MergeRequestDiffFile).to receive(:to_hash).once
diffs
end
it 'uses the diffs from the DB' do
expect(diff_with_commits).to receive(:load_diffs)
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment