Merge branch 'branch-exists-redis' into 'master'
Use Redis cache for branch existence checks Closes #40349 See merge request gitlab-org/gitlab-ce!15513
This commit is contained in:
commit
e2e4d18f1c
2 changed files with 26 additions and 5 deletions
|
@ -217,11 +217,7 @@ class Repository
|
|||
def branch_exists?(branch_name)
|
||||
return false unless raw_repository
|
||||
|
||||
@branch_exists_memo ||= Hash.new do |hash, key|
|
||||
hash[key] = raw_repository.branch_exists?(key)
|
||||
end
|
||||
|
||||
@branch_exists_memo[branch_name]
|
||||
branch_names.include?(branch_name)
|
||||
end
|
||||
|
||||
def ref_exists?(ref)
|
||||
|
|
|
@ -1166,6 +1166,31 @@ describe Repository do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#branch_exists?' do
|
||||
it 'uses branch_names' do
|
||||
allow(repository).to receive(:branch_names).and_return(['foobar'])
|
||||
|
||||
expect(repository.branch_exists?('foobar')).to eq(true)
|
||||
expect(repository.branch_exists?('master')).to eq(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#branch_names', :use_clean_rails_memory_store_caching do
|
||||
let(:fake_branch_names) { ['foobar'] }
|
||||
|
||||
it 'gets cached across Repository instances' do
|
||||
allow(repository.raw_repository).to receive(:branch_names).once.and_return(fake_branch_names)
|
||||
|
||||
expect(repository.branch_names).to eq(fake_branch_names)
|
||||
|
||||
fresh_repository = Project.find(project.id).repository
|
||||
expect(fresh_repository.object_id).not_to eq(repository.object_id)
|
||||
|
||||
expect(fresh_repository.raw_repository).not_to receive(:branch_names)
|
||||
expect(fresh_repository.branch_names).to eq(fake_branch_names)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#update_autocrlf_option' do
|
||||
describe 'when autocrlf is not already set to :input' do
|
||||
before do
|
||||
|
|
Loading…
Reference in a new issue