Skip to content
Snippets Groups Projects
Commit 585a9ab4 authored by Vasilii Iakliushin's avatar Vasilii Iakliushin :palm_tree:
Browse files

Merge branch 'graceful_degradation_for_refs' into 'master'

Graceful degradation for refs endpoint

See merge request !83088
parents c8df6a46 e8bfadb0
No related branches found
No related tags found
No related merge requests found
Pipeline #497025585 failed
...@@ -305,12 +305,7 @@ def refs ...@@ -305,12 +305,7 @@ def refs
end end
if find_tags && @repository.tag_count.nonzero? if find_tags && @repository.tag_count.nonzero?
tags = begin tags = TagsFinder.new(@repository, refs_params).execute
TagsFinder.new(@repository, refs_params).execute
rescue Gitlab::Git::CommandError
[]
end
options['Tags'] = tags.take(100).map(&:name) options['Tags'] = tags.take(100).map(&:name)
end end
...@@ -321,6 +316,8 @@ def refs ...@@ -321,6 +316,8 @@ def refs
end end
render json: options.to_json render json: options.to_json
rescue Gitlab::Git::CommandError => e
render json: { error: e.message }, status: :service_unavailable
end end
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
......
...@@ -1159,16 +1159,15 @@ def update_project(**parameters) ...@@ -1159,16 +1159,15 @@ def update_project(**parameters)
context 'when gitaly is unavailable' do context 'when gitaly is unavailable' do
before do before do
expect_next_instance_of(TagsFinder) do |finder| expect_next_instance_of(TagsFinder) do |finder|
allow(finder).to receive(:execute).and_raise(Gitlab::Git::CommandError) allow(finder).to receive(:execute).and_raise(Gitlab::Git::CommandError, 'something went wrong')
end end
end end
it 'gets an empty list of tags' do it 'responds with 503 error' do
get :refs, params: { namespace_id: project.namespace, id: project, ref: "123456" } get :refs, params: { namespace_id: project.namespace, id: project, ref: "123456" }
expect(json_response["Branches"]).to include("master") expect(response).to have_gitlab_http_status(:service_unavailable)
expect(json_response["Tags"]).to eq([]) expect(json_response['error']).to eq 'something went wrong'
expect(json_response["Commits"]).to include("123456")
end end
end end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment