简体   繁体   中英

Handle Solr error messages from Blacklight

Whenever Solr fails executing a query for some reason it returns an error message and an error code. I would like to handle such errors in Blacklight . Right now, when receiving an error from Solr, the user gets a 500 internal error. As a developer I can see that what happens is an RSolr::Error::Http in CatalogController#index with the following line of code as the source of the problem:

res = blacklight_solr.send_and_receive(path, :params=>solr_params)

Is it possible to customize the error handling so that I can at least display an indicative error message to the user instead of the unhelpful 500 internal error?

Open file lib\\blacklight\\catalog.rb . The function rsolr_request_error(exception) is responsible to handle Solr errors. The exception parameter is an RSolr::RequestError and it represents the error from Solr. In order to handle the error by displaying the message from Solr just add the following inside the else :

error_status = eval(exception.response[:body])['error']
if !error_status.nil? and !error_status['msg'].nil?
    flash_notice = error_status['msg']
else
    flash_notice = I18n.t('blacklight.search.errors.request_error')
end

If you wish to display a different message then assign a different message to flash_notice . If you wish to handle the error differently then this is where to do so.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM