Merge branch 'fix-lazy-blobs-requesting-all-previous-blobs' into 'master'

Ensure that we only request blobs in one batch

Closes #60829

See merge request gitlab-org/gitlab-ce!27625
This commit is contained in:
Dmitriy Zaporozhets 2019-04-25 09:05:24 +00:00
commit e7c494cc08
3 changed files with 23 additions and 2 deletions

View File

@ -0,0 +1,6 @@
---
title: Fix Blob.lazy always loading all previously-requested blobs when a new request
is made
merge_request:
author:
type: performance

View File

@ -55,13 +55,13 @@ module Gitlab
def get_blobs(revision_paths, limit = -1)
return [] if revision_paths.empty?
revision_paths.map! do |rev, path|
request_revision_paths = revision_paths.map do |rev, path|
Gitaly::GetBlobsRequest::RevisionPath.new(revision: rev, path: encode_binary(path))
end
request = Gitaly::GetBlobsRequest.new(
repository: @gitaly_repo,
revision_paths: revision_paths,
revision_paths: request_revision_paths,
limit: limit
)

View File

@ -43,6 +43,21 @@ describe Blob do
changelog.id
contributing.id
end
it 'does not include blobs from previous requests in later requests' do
changelog = described_class.lazy(project, commit_id, 'CHANGELOG')
contributing = described_class.lazy(same_project, commit_id, 'CONTRIBUTING.md')
# Access property so the values are loaded
changelog.id
contributing.id
readme = described_class.lazy(project, commit_id, 'README.md')
expect(project.repository).to receive(:blobs_at).with([[commit_id, 'README.md']]).once.and_call_original
readme.id
end
end
describe '#data' do