diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 507a8b66942a867d3b886640e3f479e48771b8cf..8e9731ea947ee884e88fc3739429394f551dea50 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -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 + render json: { error: _('Unable to load refs') }, status: :service_unavailable end # rubocop: enable CodeReuse/ActiveRecord diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 11035e9a230634cb0bc7343486e0bdf73ac9484a..31c61f8113a954753b2e09e63f520731d15df926 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -39636,6 +39636,9 @@ msgstr "" msgid "Unable to load file contents. Try again later." msgstr "" +msgid "Unable to load refs" +msgstr "" + msgid "Unable to load the diff" msgstr "" diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index c098ea71f7a28fa701b91c169e20df2903c84f11..84f036787ca339e9d6500452ed71376b69ee22aa 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -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 'Unable to load refs' end end