Serhiy Bzhezytskyy created SOLR-18496:
-----------------------------------------
Summary: Single-pass distributed query fails with an NPE when the
unique key is renamed in fl
Key: SOLR-18496
URL: https://issues.apache.org/jira/browse/SOLR-18496
Project: Solr
Issue Type: Bug
Reporter: Serhiy Bzhezytskyy
With {{distrib.singlePass=true}}, a non-grouped distributed query whose {{fl}}
renames the unique key without also requesting it fails with HTTP 500. The
two-pass path (SOLR-6744) and grouped queries (SOLR-15273) handle the rename;
the single-pass merge in {{QueryComponent.mergeIds}} does not, and
{{CombinedQueryComponent.mergeIds}} has the same lookup.
To reproduce (SolrCloud, two shards):
{code:bash}
bin/solr start
bin/solr create -c test --shards 2
curl 'http://localhost:8983/solr/test/update?commit=true' -H 'Content-Type:
application/json' -d '[{"id":"a1"},{"id":"a2"},{"id":"a3"}]'
curl
'http://localhost:8983/solr/test/select?q=*:*&fl=aliasId:id&distrib.singlePass=true'
{code}
The response is a 500:
{noformat}
java.lang.NullPointerException: Cannot invoke "Object.toString()" because
"shardDoc.id" is null
at
org.apache.solr.handler.component.QueryComponent$3.resultIds(QueryComponent.java:963)
at
org.apache.solr.handler.component.QueryComponent.setResultIdsAndResponseDocs(QueryComponent.java:1290)
at
org.apache.solr.handler.component.QueryComponent.mergeIds(QueryComponent.java:1234)
{noformat}
The same request without {{distrib.singlePass}}, or with {{fl=id,aliasId:id}},
returns the documents. Through the combined query handler, {{"fields":
["key:id"]}} together with {{"distrib.singlePass": true}} fails the same way in
{{CombinedQueryComponent.mergeIds}}.
In single-pass mode the shards run the original {{fl}}, so they return the key
as {{aliasId}}, while {{mergeIds}} reads it under the schema name {{id}} and
gets null. {{returnFields}} already reads the renamed key. The fix is to read
the key under the name {{fl}} gave it in both {{mergeIds}} implementations,
only for single-pass requests.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]