diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb index dad73c37fea5d521c83ed738065c86fdda160a20..6264f10ce2d9323c48cc49ee0b711455c66ee5f7 100644 --- a/app/controllers/projects/branches_controller.rb +++ b/app/controllers/projects/branches_controller.rb @@ -34,11 +34,9 @@ def index Gitlab::GitalyClient.allow_n_plus_1_calls do render end - rescue Gitlab::Git::CommandError => e - Gitlab::ErrorTracking.track_exception(e) - + rescue Gitlab::Git::CommandError @gitaly_unavailable = true - render + render status: :service_unavailable end format.json do branches = BranchesFinder.new(@repository, params).execute diff --git a/spec/controllers/projects/branches_controller_spec.rb b/spec/controllers/projects/branches_controller_spec.rb index ea22e6b6f1037bcb5b61d8e44ebd1c2fc83294d6..1580ad9361dee816c88ae652be28fc638f3fd67e 100644 --- a/spec/controllers/projects/branches_controller_spec.rb +++ b/spec/controllers/projects/branches_controller_spec.rb @@ -688,21 +688,23 @@ def destroy_all_merged end context 'when gitaly is not available' do + let(:request) { get :index, format: :html, params: { namespace_id: project.namespace, project_id: project } } + before do allow_next_instance_of(Gitlab::GitalyClient::RefService) do |ref_service| allow(ref_service).to receive(:local_branches).and_raise(GRPC::DeadlineExceeded) end - - get :index, format: :html, params: { - namespace_id: project.namespace, project_id: project - } end - it 'returns with a status 200' do - expect(response).to have_gitlab_http_status(:ok) + it 'returns with a status 503' do + request + + expect(response).to have_gitlab_http_status(:service_unavailable) end it 'sets gitaly_unavailable variable' do + request + expect(assigns[:gitaly_unavailable]).to be_truthy end end