[
https://issues.apache.org/jira/browse/SOLR-104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12467305
]
Hoss Man commented on SOLR-104:
-------------------------------
Woot! ... i think we're really close to comiting this.
I made a hodgepodge list of comments as i read through everything, and then
tried to organize them. I agree with yonik that we should feel free to commit
new functionality without being afraid of needing to change the api of that
functionality befor the next release, but i'm not 100% comfortable with how
backwards compatible this patch is for the existing /select and /update URLs
... this may just be an issue of me being paranoid (and tired) but there's at
least one code path difference.
Anyway, here are my notes...
Comments regarding backwards compatibility of the patch...
- SolrCore.update(Reader,Writer) was a public method that's been
removed ... this is probably fine, just pointing it out for the
record.
- 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.
- While i think it's important to refactor the XML Update
parsing out of SolrCore - I'm still not clear what is gained by
eliminating SolrServlet and SolrUpdate. The big advantage of
the new dispatcher being a Filter is that it can pass requests on
that it doesn't want to deal with, so why not leave the existing
servlets arround with only the minimum neccessary changes...
- move SolrCore's init to Dispatcher
- use 3 arg core.execute in SolrServlet
- have SolrUpdateServlet call UpdateRequestHandler.update(Reader)
and generate the legacy response XML
...in order to reduce the possibility of an introducing bugs
(particularly since the existing Servlets are the one area where we
don't have *any* unit tests)
Comments regarding functionality that i think we *may* want to address
before commiting (but i won't fight over if i'm the only one that cares)...
- UpdateRequestHandler should probably renamed XmlUpdateRequestHandler
(particularly since i expect Yonik to commit a
CsvUpdateRequestHandler real soon now)
- 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)
- 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?
- I'm really not fond of having SolrParams.STREAM_TYPE. Can we please,
please leave it out for now and rely on on content-type detection?
We can add it back in if/when we make RequestParser a public
interface and let people register them in solrconfig.
- I really don't think we want to open the pandoras box of putting
the HttpServletRequest in the SolrQueryRequest ... i'd hate to put
that in and then have to support it forever.
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 ?
- StandardRequestHandler and DisMaxRequestHandler have only been
changed to subclass the new base class.
- only whitespace changes in SolrRequestHandler.java
- SolrServletRequest has only imports rearranged
Things which definitely shouldn't block up the patch, but should go on
a short term todo list...
- see backwards compatibility comment about (Xml)UpdateRequestHandler
using InputStreamReader without specifying a charset ... in general
the handler should look at the ContentStream's content type to determine
the encoding of the InputStream (and probably default to UTF-8)
- need to work out what kind of NamedList should be returned by
(Xml)UpdateRequestHandler.update(Reader)
- some of the new files are missing the Apache boilerplate.
- a use case we talked about that still isn't covered is opening local
files as a stream ... this should be easy to add later right along
side STREAM_URL.
- we should fill in the getURL methods for DisMax/Standard to point at wiki
- CommitRequestHandler should use UpdateParams.OPTIMIZE
- the init semantics for (Xml)UpdateRequestHandler are odd: as a
RequestHandler it's garunteed that init(NamedList) will be called, but
instead it uses it's own private init() that's called lazily.
- DumpRequestHandler should dump ContentStream.getSize().
- 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)
- STREAM_URL based ContentStreams can have a meaningful getSize()
and getContentType() if we use openConnection instead of openStream.
- STREAM_BODY based ContentStreams can get their size from the char[]
- 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)
> 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,
> 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.