[ https://issues.apache.org/jira/browse/SOLR-104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12467787 ]
Ryan McKinley commented on SOLR-104: ------------------------------------ Ok, I just uploaded (hopefully) a final version. It takes care of (most) everything you suggest. > - SolrUpdateServlet used HttpServletRequest.getReader, the new > UpdateRequestHandler uses an InputStreamReader arround > HttpServletRequest.getInputStream() ... this seems bad for legacy > update support from a char encoding standpoint. Can you check: XmlUpdateRequestHandler.handleRequestBody(); I added a check for charset, but am not totally confident in the method. > - StandardRequestParser can't assume that a POST which isn't > multipart/* should be handled by a RawRequestParser ... if the > content type is "application/x-www-form-urlencoded" then > SimpleRequestParser should be used (so all params from query string > and body are included) done. > - What should the expectations of > ContentStream.getInputStream().close() be? Should the Dispatcher > iterate over any Iterable streams when writing the output and try > to close them, ignoring any Exceptions? Each handler is responsible to make sure they are closed. Since it is an Iterable<ContentStream> - I don't think it is OK to iterate a *second* time. If we make it a Collection<> then that would be a reasonable behavior. > > Things in the current patch that aren't strictly neccessary > for the current issue and can (should?) be commited seperately... > > - are we definitely deprecating SolrQueryResponse.getException ? I took it out. we can commit it separately. > - StandardRequestHandler and DisMaxRequestHandler have only been > changed to subclass the new base class. I left it in. You can ignore changes to StandardRequestHandler and DisMax if that makes more sense. > - doFilter should call parsers.parse( path, req ) as soon as it has > the path, and then delegate to a helper method that doesn't have > access to the HttpServletRequest ... this reduces both the > complexity of the method, and the likelyhood of > someone inadvertently introducing an error (mangling the POST body) > when making future changes in the long deep method. > The one thing to watch out for is forcing POST in legacy > update. (assuming legacy update stays in the Filter) I removed the legacy handling from SolrDispatchFilter - this simplifies it greatly, so i'm not sure if you still think this is necessary. > - it's not clear to me why the interface for SolrRequestParser is... > public SolrParams parseParamsAndFillStreams( > final HttpServletRequest, ArrayList<ContentStream>) > ...instead of just... > public SolrQueryRequest(final HttpServletRequest) > ...with the param parsing loops in > SolrRequestParsers.buildRequestFrom > in static utility methods (in case a RequestParser doesn't want to > support STREAM_URL or STREAM_BODY) > I left it as is for now. Since it is a private interface, we should feel free to clean it up / change it as we see fit. But now I go to sleep! > Update Plugins > -------------- > > Key: SOLR-104 > URL: https://issues.apache.org/jira/browse/SOLR-104 > Project: Solr > Issue Type: Improvement > Components: update > Affects Versions: 1.2 > Reporter: Ryan McKinley > Fix For: 1.2 > > Attachments: commons-fileupload-20070107.jar, commons-io-1.2.jar, > DispatchFilter.patch, DispatchFilter.patch, DispatchFilter.patch, > DispatchFilter.patch, DispatchFilter.patch, DispatchFilter.patch, > DispatchFilter.patch, HandlerRefactoring-DRAFT-SRC.zip, > HandlerRefactoring-DRAFT-SRC.zip, HandlerRefactoring.DRAFT.patch, > HandlerRefactoring.DRAFT.patch, HandlerRefactoring.DRAFT.zip > > > The plugin framework should work for 'update' actions in addition to 'search' > actions. > For more discussion on this, see: > http://www.nabble.com/Re%3A-Handling-disparate-data-sources-in-Solr-tf2918621.html#a8305828 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.