diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index 1091e09f1..ff8610174 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -5,5 +5,8 @@ class SearchController < ApplicationController tag_docs = Search::Tag.search_documents("name:#{params[:name]}* AND supported:true") render json: { result: tag_docs } + rescue Elasticsearch::Transport::Transport::Errors::BadRequest + DataDogStatsClient.increment("elasticsearch.errors", tags: ["error:BadRequest"]) + render json: { result: [] } end end diff --git a/spec/requests/search_spec.rb b/spec/requests/search_spec.rb index a507a1cff..08f510576 100644 --- a/spec/requests/search_spec.rb +++ b/spec/requests/search_spec.rb @@ -15,5 +15,12 @@ RSpec.describe "Search", type: :request, proper_status: true do get "/search/tags" expect(response.parsed_body).to eq("result" => mock_documents) end + + it "returns an empty array when a Elasticsearch Bad Request error is raised" do + sign_in authorized_user + allow(Search::Tag).to receive(:search_documents).and_raise(Elasticsearch::Transport::Transport::Errors::BadRequest) + get "/search/tags" + expect(response.parsed_body).to eq("result" => []) + end end end