Commit 27732df3 authored by Sean McGivern's avatar Sean McGivern

Merge branch 'option-disable-archive-cache' into 'master'

Add option to disable git archive caching in workhorse

See merge request gitlab-org/gitlab-ce!16325
parents a188030d d805cd36
...@@ -97,6 +97,9 @@ module Gitlab ...@@ -97,6 +97,9 @@ module Gitlab
) )
end end
# If present DisableCache must be a Boolean. Otherwise workhorse ignores it.
params['DisableCache'] = true if git_archive_cache_disabled?
[ [
SEND_DATA_HEADER, SEND_DATA_HEADER,
"git-archive:#{encode(params)}" "git-archive:#{encode(params)}"
...@@ -244,6 +247,10 @@ module Gitlab ...@@ -244,6 +247,10 @@ module Gitlab
right_commit_id: diff_refs.head_sha right_commit_id: diff_refs.head_sha
} }
end end
def git_archive_cache_disabled?
ENV['WORKHORSE_ARCHIVE_CACHE_DISABLED'].present? || Feature.enabled?(:workhorse_archive_cache_disabled)
end
end end
end end
end end
...@@ -26,11 +26,16 @@ describe Gitlab::Workhorse do ...@@ -26,11 +26,16 @@ describe Gitlab::Workhorse do
'GitalyRepository' => repository.gitaly_repository.to_h.deep_stringify_keys 'GitalyRepository' => repository.gitaly_repository.to_h.deep_stringify_keys
) )
end end
let(:cache_disabled) { false }
subject do subject do
described_class.send_git_archive(repository, ref: ref, format: format) described_class.send_git_archive(repository, ref: ref, format: format)
end end
before do
allow(described_class).to receive(:git_archive_cache_disabled?).and_return(cache_disabled)
end
context 'when Gitaly workhorse_archive feature is enabled' do context 'when Gitaly workhorse_archive feature is enabled' do
it 'sets the header correctly' do it 'sets the header correctly' do
key, command, params = decode_workhorse_header(subject) key, command, params = decode_workhorse_header(subject)
...@@ -39,6 +44,15 @@ describe Gitlab::Workhorse do ...@@ -39,6 +44,15 @@ describe Gitlab::Workhorse do
expect(command).to eq('git-archive') expect(command).to eq('git-archive')
expect(params).to include(gitaly_params) expect(params).to include(gitaly_params)
end end
context 'when archive caching is disabled' do
let(:cache_disabled) { true }
it 'tells workhorse not to use the cache' do
_, _, params = decode_workhorse_header(subject)
expect(params).to include({ 'DisableCache' => true })
end
end
end end
context 'when Gitaly workhorse_archive feature is disabled', :skip_gitaly_mock do context 'when Gitaly workhorse_archive feature is disabled', :skip_gitaly_mock do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment