[ 
https://issues.apache.org/jira/browse/SOLR-141?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13037258#comment-13037258
 ] 

Mike Sokolov edited comment on SOLR-141 at 5/21/11 3:55 AM:
------------------------------------------------------------

In this patch, SolrDispatchFilter.sendError() uses the ResponseWriter to format 
an error response.

When the ResponseWriter is a BinaryResponseWriter, the response is written 
directly to the servlet's output stream.

The error text is included in the response with key="error". Error responses 
come back with HTTP status=200, although the status code in the SolrResponse is 
as expected.  I added a test to SolrExampleTests that shows this.  

It would be a trivial change to set the proper HTTP status codes, but a 
corresponding change in CommonsHttpSolrServer.request() would be needed so as 
to return a usable response in that case, as the issue describes.  For my part, 
I think raising an exception might be better than returning a response that 
seems to indicate success, but happens to include an error message.  However 
this goes against the idea of including partial data in a response, which was 
mentioned as a goal, so I just made a minimal change. 

      was (Author: sokolov):
    In this patch, SolrDispatchFilter.sendError() uses the ResponseWriter to 
format an error response.
  
> Errors/Exceptions should be formated by ResponseWriter
> ------------------------------------------------------
>
>                 Key: SOLR-141
>                 URL: https://issues.apache.org/jira/browse/SOLR-141
>             Project: Solr
>          Issue Type: Wish
>            Reporter: Hoss Man
>             Fix For: 3.2
>
>         Attachments: SOLR-141-sendError.patch, error-response.patch, 
> solr-exception-writer-solr-1.2.diff, solr-exception-writer-v2.diff, 
> solr-exception-writer-v3.diff
>
>
> Whenever possible, the Solr Dispatcher should to let the ResponseWriter 
> format Exceptions using the format the user expects -- this should in no way 
> change the fact that Exceptions currently generate non 200 HTTP status codes, 
> nor should it prevent the Dispatcher from using the exception message as the 
> HTTP status message -- but clients that want the full details of the error 
> should be able to parse them in the format they expected based on the request.
> this would also give RequestHandlers the oportunity to return "partial" 
> results - by adding both whatever results they have to the Response as well 
> as the Exception they encountered.
> situations where this can't happen are obviously:
>   * Exception thrown by ResponseWriter
>   * Exception thrown so early in the request thta the DIspather doesn't know 
> which ResposneWriter the client wanted.
> ...in those cases, plain text is a wise choice.
> thing that would probably need to be done to make this work:
> 1) if the Dispatcher catches an exception, it should call 
> SolrQueryResponse.setException, set the HTTP status code/message as it 
> currently does, but then hand off to the ResponseWriter.
> 2) Dispatcher needs to check SolrQueryResponse.getException and set the HTTP 
> status code/message just like if it caught the exception itself.
> 3) all of the ResponseWriters should start looking at 
> SolrQueryResponse.getException if they aren't already, and formatting it in a 
> usefull way.
> 4) if the ResponseWriter throws an exception, Dispatcher needs to return a 
> nice plain text error page
> extension to this idea... add a new method to ResponseWriter to generate a 
> generic error message in the appropriate format that Dispatcher can use if 
> the ResponseWriter throws an exception (as a backup before resorting to plain 
> text)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to