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

Jason Gerlowski commented on SOLR-18332:
----------------------------------------

Alright! We've made pretty significant progress here. All of the easy, 
uncomplicated removals are done and we're down to the last few QT usages that 
tie into user-facing functionality:
 * {{SolrDispatchFilter}} - the "main" usage that primarily comes up when "qt" 
is mentioned. "qt" query parameter is used to override "/select" and choose a 
different RequestHandler/API.
 * {{PingRequestHandler}} - nearly identical capabilities to SolrDispatchFilter.
 * {{cloud(...)}} Streaming Expression - a "qt" named-param in the streaming 
expression is used to ping a requestHandler. Almost always used to switch 
between "/select" (while prototyping) and the much faster but more restrictive 
"/export" (in production).
 * {{subquery}} Document Transformer - for a pseudo-field "foo", uses 
query-params like 'foo.q', 'foo.rows', etc. to specify the request to make for 
each document matching the primary (or "parent") query.

These are all "user facing". But I think we can deprecate/remove most or all of 
these without any real loss of user-capabilites.  My recommendation, starting 
with what I'd guess is the least controversial, would be:
 * Remove the SolrDispatchFilter support for "qt" entirely. It's not used by 
any of the other qt-based features. Users are no poorer for its loss as they 
can just specify the requestHandler/API they want by using the correct path.
 * Deprecate {{{}cloud(...){}}}'s path/qt parameter and in its place add a 
boolean flag (maybe "flexible=true" or "useSelect=true" or "prototype=true", 
idk) that lets users choose between {{/select}} and {{{}/export{}}}. This 
retains the benefit that "qt" was meant to serve here, but without the security 
concerns of allowing users to specify an arbitrary path.
 * check whether {{PingRequestHandler}} serves a compelling use case today, and 
deprecate/remove this feature altogether.
 ** Making this case in detail deserves its own thread/ticket, but 
PingRequestHandler is redundant entirely in SolrCloud mode. And even in 
standalone mode, it doesn't serve much purpose. Anyone looking for a core-level 
healthcheck can make queries to cores directly, without the 
proxying/request-tunneling done by PingRequestHandler

> Remove usages of deprecated 'qt' parameter and related SolrJ functionality
> --------------------------------------------------------------------------
>
>                 Key: SOLR-18332
>                 URL: https://issues.apache.org/jira/browse/SOLR-18332
>             Project: Solr
>          Issue Type: Improvement
>          Components: SolrJ
>    Affects Versions: main(11.0)
>            Reporter: Jason Gerlowski
>            Assignee: Jason Gerlowski
>            Priority: Minor
>              Labels: pull-request-available
>          Time Spent: 15h 10m
>  Remaining Estimate: 0h
>
> SOLR-17715 deprecated SolrQuery's setRequestHandler/getRequestHandler methods 
> in favor of a new QueryRequest ctor that takes an explicit requestHandler.  
> SolrJ users no longer need to send 'qt' to select a handler.
> There's some debate over whether this deprecation will "stick" and whether 
> we'll be able to eliminate all usages of qt, but in the meantime there are 
> many usages of 'qt' (and related methods) that are inarguably unnecessary. 
> This ticket tracks incrementally removing usages of the deprecated SolrJ 
> convenience methods / 'qt'-as-handler-override pattern in the codebase, in 
> cases where a path-based alternative exists.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to