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