[
https://issues.apache.org/jira/browse/SOLR-14931?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17213881#comment-17213881
]
Christine Poerschke commented on SOLR-14931:
--------------------------------------------
Just adding a note here to cross-reference SOLR-10059 and SOLR-14931 as
potentially having things in common; haven't looked too closely though, only
going by _"SolrCloud" and "appends" and "twice"_ mentionings.
> Macros in appends/invariants parameters not getting expanded in Solrcloud
> -------------------------------------------------------------------------
>
> Key: SOLR-14931
> URL: https://issues.apache.org/jira/browse/SOLR-14931
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Components: SolrCloud
> Affects Versions: 7.6, 8.6.3
> Reporter: Johannes Baiter
> Priority: Major
>
> Macros in a request handler's {{appends}} or {{invariants}} parameter sets
> are not getting expanded when running in a SolrCloud setup.
> In my case, I have a handler like the following:
> {code:xml}
> <requestHandler name="/myhandler" class="solr.SearchHandler">
> <lst name="defaults">
> <str name="q">some_field:"$${my_term}"</str>
> <str
> name="fl">term_defaults:'$${my_term},freq_defaults:docfreq(some_field,
> '$${my_term}')</str>
> </lst>
> <lst name="appends">
> <str
> name="fl">term_appends:'$${my_term}',freq_appends:docfreq(some_field,
> '$${my_term}')</str>
> </lst>
> </requestHandler>
> {code}
> When querying the handler with `?my_term=foobar&echoParams=all`, something
> like this is the result:
> {code:json}
> {
> "response": {
> "docs": [
> {
> "term_defaults": "foobar",
> "term_appends": "${my_term}",
> "freq_appends": 0,
> "freq_defaults": 1
> }
> ],
> "maxScore": 13.244947,
> "numFound": 1,
> "start": 0
> },
> "responseHeader": {
> "QTime": 262091,
> "params": {
> "echoParams": "all",
> "fl": [
> "term_defaults:'foobar',freq_defaults:docfreq(some_field,
> 'foobar')",
> "term_appends:'foobar',freq_appends:docfreq(some_field,
> 'foobar')"
> ],
> "my_term": "foobar",
> "q": "some_field:\"foobar\"",
> "rows": "1"
> },
> "status": 0,
> "zkConnected": true
> }
> }
> {code}
> As you can see, the macro in the {{appends}} {{fl}} parameter gets expanded
> in the {{responseHeader.params.fl}} field, but not in the actual document.
> I believe the reason for this is the following:
> * Setting of defaults/invariants/appends happens once before the request gets
> sent to the shards
> * Here, macro expansion happens, i.e. the shards get the fully expanded
> parameters
> * On the shards, once again, defaults/invariants/appends are set
> (https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java#L209)
> * However, this time *macros are not expanded*
> (https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/request/json/RequestUtil.java#L151-L161)
> * For {{defaults}} parameters, this doesn't break anything, since the
> (expanded) parameter from the request takes precedence over the
> server-supplied value.
> * However, for {{appends}}, both the expanded and the unexpanded version are
> now set, while for {{invariants}} the expanded value is removed from the
> params
> I think the easy/obvious fix for this would be not to set
> {{defaults}}/{{invariants}}/{{appends}} parameters twice, i.e. disable it
> when {{isShard=true}}, just like macro expansion, but I don't have the full
> picture if that might not break something else.
> Here's the Twitter thread where I rubber-ducked through this issue:
> https://twitter.com/jbaiter_/status/1316023733576843272
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]