Repository#exists? can only be queried with Gitaly

Has been in opt out for 5 months, and within GitLab been in production
for longer than that.

No code needs to be migrated as this is implemented in GoLang over at
Gitaly.

Closes https://gitlab.com/gitlab-org/gitaly/issues/314
This commit is contained in:
Zeger-Jan van de Weg 2018-04-24 16:57:35 +02:00
parent 5beb4ddebf
commit 5cd57cf250
No known key found for this signature in database
GPG key ID: 65F6A8D64A88ABAC
3 changed files with 9 additions and 22 deletions

View file

@ -0,0 +1,5 @@
---
title: Repository#exists? is always executed through Gitaly
merge_request:
author:
type: performance

View file

@ -142,15 +142,7 @@ module Gitlab
end end
def exists? def exists?
Gitlab::GitalyClient.migrate(:repository_exists, status: Gitlab::GitalyClient::MigrationStatus::OPT_OUT) do |enabled| gitaly_repository_client.exists?
if enabled
gitaly_repository_client.exists?
else
circuit_breaker.perform do
File.exist?(File.join(path, 'refs'))
end
end
end
end end
# Returns an Array of branch names # Returns an Array of branch names

View file

@ -1224,15 +1224,15 @@ describe Repository do
end end
end end
shared_examples 'repo exists check' do describe '#exists?' do
it 'returns true when a repository exists' do it 'returns true when a repository exists' do
expect(repository.exists?).to eq(true) expect(repository.exists?).to be(true)
end end
it 'returns false if no full path can be constructed' do it 'returns false if no full path can be constructed' do
allow(repository).to receive(:full_path).and_return(nil) allow(repository).to receive(:full_path).and_return(nil)
expect(repository.exists?).to eq(false) expect(repository.exists?).to be(false)
end end
context 'with broken storage', :broken_storage do context 'with broken storage', :broken_storage do
@ -1242,16 +1242,6 @@ describe Repository do
end end
end end
describe '#exists?' do
context 'when repository_exists is disabled' do
it_behaves_like 'repo exists check'
end
context 'when repository_exists is enabled', :skip_gitaly_mock do
it_behaves_like 'repo exists check'
end
end
describe '#has_visible_content?' do describe '#has_visible_content?' do
before do before do
# If raw_repository.has_visible_content? gets called more than once then # If raw_repository.has_visible_content? gets called more than once then