Merge branch 'fix-gitaly-not-found' into 'master'

Re-enable ref operations with gitaly after not-found fix

See merge request !10773
This commit is contained in:
Douwe Maan 2017-05-02 22:32:34 +00:00
commit 185fd98fd4
3 changed files with 92 additions and 79 deletions

View File

@ -45,17 +45,13 @@ module Gitlab
# Default branch in the repository
def root_ref
# NOTE: This feature is intentionally disabled until
# https://gitlab.com/gitlab-org/gitaly/issues/179 is resolved
# @root_ref ||= Gitlab::GitalyClient.migrate(:root_ref) do |is_enabled|
# if is_enabled
# gitaly_ref_client.default_branch_name
# else
@root_ref ||= discover_default_branch
# end
# end
rescue GRPC::BadStatus => e
raise CommandError.new(e)
@root_ref ||= gitaly_migrate(:root_ref) do |is_enabled|
if is_enabled
gitaly_ref_client.default_branch_name
else
discover_default_branch
end
end
end
# Alias to old method for compatibility
@ -72,17 +68,13 @@ module Gitlab
# Returns an Array of branch names
# sorted by name ASC
def branch_names
# Gitlab::GitalyClient.migrate(:branch_names) do |is_enabled|
# NOTE: This feature is intentionally disabled until
# https://gitlab.com/gitlab-org/gitaly/issues/179 is resolved
# if is_enabled
# gitaly_ref_client.branch_names
# else
branches.map(&:name)
# end
# end
rescue GRPC::BadStatus => e
raise CommandError.new(e)
gitaly_migrate(:branch_names) do |is_enabled|
if is_enabled
gitaly_ref_client.branch_names
else
branches.map(&:name)
end
end
end
# Returns an Array of Branches
@ -152,17 +144,13 @@ module Gitlab
# Returns an Array of tag names
def tag_names
# Gitlab::GitalyClient.migrate(:tag_names) do |is_enabled|
# NOTE: This feature is intentionally disabled until
# https://gitlab.com/gitlab-org/gitaly/issues/179 is resolved
# if is_enabled
# gitaly_ref_client.tag_names
# else
rugged.tags.map { |t| t.name }
# end
# end
rescue GRPC::BadStatus => e
raise CommandError.new(e)
gitaly_migrate(:tag_names) do |is_enabled|
if is_enabled
gitaly_ref_client.tag_names
else
rugged.tags.map { |t| t.name }
end
end
end
# Returns an Array of Tags
@ -1294,6 +1282,14 @@ module Gitlab
@gitaly_commit_client ||= Gitlab::GitalyClient::Commit.new(self)
end
def gitaly_migrate(method, &block)
Gitlab::GitalyClient.migrate(method, &block)
rescue GRPC::NotFound => e
raise NoRepository.new(e)
rescue GRPC::BadStatus => e
raise CommandError.new(e)
end
# Returns the `Rugged` sorting type constant for a given
# sort type key. Valid keys are `:none`, `:topo`, and `:date`
def rugged_sort_type(key)

View File

@ -11,7 +11,9 @@ module Gitlab
def default_branch_name
request = Gitaly::FindDefaultBranchNameRequest.new(repository: @gitaly_repo)
stub.find_default_branch_name(request).name.gsub(/^refs\/heads\//, '')
branch_name = stub.find_default_branch_name(request).name
Gitlab::Git.branch_name(branch_name)
end
def branch_names

View File

@ -24,21 +24,26 @@ describe Gitlab::Git::Repository, seed_helper: true do
end
end
# TODO: Uncomment when feature is reenabled
# context 'with gitaly enabled' do
# before { stub_gitaly }
#
# it 'gets the branch name from GitalyClient' do
# expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name)
# repository.root_ref
# end
#
# it 'wraps GRPC exceptions' do
# expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name).
# and_raise(GRPC::Unknown)
# expect { repository.root_ref }.to raise_error(Gitlab::Git::CommandError)
# end
# end
context 'with gitaly enabled' do
before { stub_gitaly }
it 'gets the branch name from GitalyClient' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name)
repository.root_ref
end
it 'wraps GRPC not found' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name).
and_raise(GRPC::NotFound)
expect { repository.root_ref }.to raise_error(Gitlab::Git::Repository::NoRepository)
end
it 'wraps GRPC exceptions' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:default_branch_name).
and_raise(GRPC::Unknown)
expect { repository.root_ref }.to raise_error(Gitlab::Git::CommandError)
end
end
end
describe "#rugged" do
@ -113,21 +118,26 @@ describe Gitlab::Git::Repository, seed_helper: true do
it { is_expected.to include("master") }
it { is_expected.not_to include("branch-from-space") }
# TODO: Uncomment when feature is reenabled
# context 'with gitaly enabled' do
# before { stub_gitaly }
#
# it 'gets the branch names from GitalyClient' do
# expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names)
# subject
# end
#
# it 'wraps GRPC exceptions' do
# expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names).
# and_raise(GRPC::Unknown)
# expect { subject }.to raise_error(Gitlab::Git::CommandError)
# end
# end
context 'with gitaly enabled' do
before { stub_gitaly }
it 'gets the branch names from GitalyClient' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names)
subject
end
it 'wraps GRPC not found' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names).
and_raise(GRPC::NotFound)
expect { subject }.to raise_error(Gitlab::Git::Repository::NoRepository)
end
it 'wraps GRPC other exceptions' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:branch_names).
and_raise(GRPC::Unknown)
expect { subject }.to raise_error(Gitlab::Git::CommandError)
end
end
end
describe '#tag_names' do
@ -145,21 +155,26 @@ describe Gitlab::Git::Repository, seed_helper: true do
it { is_expected.to include("v1.0.0") }
it { is_expected.not_to include("v5.0.0") }
# TODO: Uncomment when feature is reenabled
# context 'with gitaly enabled' do
# before { stub_gitaly }
#
# it 'gets the tag names from GitalyClient' do
# expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names)
# subject
# end
#
# it 'wraps GRPC exceptions' do
# expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names).
# and_raise(GRPC::Unknown)
# expect { subject }.to raise_error(Gitlab::Git::CommandError)
# end
# end
context 'with gitaly enabled' do
before { stub_gitaly }
it 'gets the tag names from GitalyClient' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names)
subject
end
it 'wraps GRPC not found' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names).
and_raise(GRPC::NotFound)
expect { subject }.to raise_error(Gitlab::Git::Repository::NoRepository)
end
it 'wraps GRPC exceptions' do
expect_any_instance_of(Gitlab::GitalyClient::Ref).to receive(:tag_names).
and_raise(GRPC::Unknown)
expect { subject }.to raise_error(Gitlab::Git::CommandError)
end
end
end
shared_examples 'archive check' do |extenstion|