[
https://issues.apache.org/jira/browse/SOLR-141?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12854690#action_12854690
]
Frank Wesemann commented on SOLR-141:
-------------------------------------
{quote}
1) more smarts in SolrCore.getErrorResponseWriter to be able to deal with the
possibility that the ResponseWriter is also an ErrorResponseWriter - that way
people wouldn't have to register a dual purpose impl twice
{quote}
wouldn't it be sufficient to extend the interface QueryResponseWriter with a
writeError(Writer, HttpServletResponse, SolrResponse, SolrRequest) Method?
The DispatchFilter may set the last caught exception on SolrResponse and call
it in the sendError() method.
The ResponseWriter impl may than do something like:
{code}
public void writeError(Writer out, HttpServletResponse res, SolrResponse
solrRes, SolrRequest solrReq) {
Throwable th = solrRes.getException();
res.setStatus(code);
res.setContentType( getContentType() );
myTextResponseWriterImpl.writeInt( code );
myTextResponseWriterImpl.writeStr( th.getMessage );
if ( ! th instanceof QueryResponseWritingExecption ) {
try {
myTextResponseWriterImpl.writeResponse();
} catch ( Exception e) {
myTextResonseWriterIml.writeStr("an additionalError in writing the
result occured: " + e.getMessage() );
}
}
//... do what else you need to.
}
{code}
> 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: 1.5
>
> Attachments: 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.
-
You can reply to this email to add a comment to the issue online.