Skip to content
Snippets Groups Projects
Commit 585a9ab4 authored by Vasilii Iakliushin's avatar Vasilii Iakliushin :two:
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
end
if find_tags && @repository.tag_count.nonzero?
tags = begin
TagsFinder.new(@repository, refs_params).execute
rescue Gitlab::Git::CommandError
[]
end
tags = TagsFinder.new(@repository, refs_params).execute
options['Tags'] = tags.take(100).map(&:name)
end
......@@ -321,6 +316,8 @@ def refs
end
render json: options.to_json
rescue Gitlab::Git::CommandError => e
render json: { error: e.message }, status: :service_unavailable
end
# rubocop: enable CodeReuse/ActiveRecord
......
......@@ -1159,16 +1159,15 @@ def update_project(**parameters)
context 'when gitaly is unavailable' do
before do
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
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" }
expect(json_response["Branches"]).to include("master")
expect(json_response["Tags"]).to eq([])
expect(json_response["Commits"]).to include("123456")
expect(response).to have_gitlab_http_status(:service_unavailable)
expect(json_response['error']).to eq 'something went wrong'
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