Hi all,

I'm facing the problem that Solr is throwing a NullPointerException when 
performing a distributed search with multiple shards having elevation 
configured where one or more shards do have elevated results but others do not.

We are using Solr 8.2 and have the QueryElevationComponent configured with 
"last-components" of the default search handler "/select". But the problem also 
occurs when using the explicit "/elevate" search handler.
  <requestHandler name="/select" class="solr.SearchHandler">
...
<arr name="last-components">
  <str>elevator</str>
</arr>
  </requestHandler>
  ...
  <searchComponent name="elevator" class="solr.QueryElevationComponent" >
<!-- pick a fieldType to analyze queries -->
<str name="queryFieldType">string</str>
<str name="config-file">elevate.xml</str>
  </searchComponent>

### Steps to reproduce:

(1) Add entries to the elevate.xml of each core to elevate a specific document 
for the text "searchTerm":

   core1:
   <elevate>
 ...
 <query text="searchTerm"><doc id="core1docId1" /></query>
   </elevate>
   core2:
   <elevate>
 ...
 <query text="searchTerm"><doc id="core2docId1" /></query>
   </elevate>

(2) Execute query (we use port 9983): 
http://localhost:9983/solr/web/select?q=elevatedTerm&lowercaseOperators=false&df=text_en&defType=edismax&fq=lang:en&shards=localhost:9983/solr/core1,localhost:9983/solr/core2&fl=[elevated],[shard],area,id&rows=10&start=0

Now as both shards have elevated documents for the requested "searchTerm" the 
search results are as expected:

response: {
numFound: 5192,
start: 0,
maxScore: 1.9032197,
docs: [{
area: "press",
id: "core1docId1",
[elevated]: true,
[shard]: "localhost:9983/solr/core1"
}, {
area: "products",
id: "core2docId1",
[elevated]: true,
[shard]: "localhost:9983/solr/core2"
}, {
area: "press",
id: "core1docId2",
[elevated]: false,
[shard]: "localhost:9983/solr/core1"
},
...

(3) Remove the elevation entry for that "searchTerm" from one of the cores, 
e.g. via comment

   core2:
   <elevate>
 ...
 <!--
 <query text="searchTerm"><doc id="core2docId1" /></query>
 -->
   </elevate>


(4) Reload the modified core: 
http://localhost:9983/solr/admin/cores?action=RELOAD&core=core2

(5) Request same query again and you get the NPE:

error: {
trace: "java.lang.NullPointerException
           at 
org.apache.solr.handler.component.QueryComponent.unmarshalSortValues(QueryComponent.java:1068)
           at 
org.apache.solr.handler.component.QueryComponent.mergeIds(QueryComponent.java:917)
           at 
org.apache.solr.handler.component.QueryComponent.handleRegularResponses(QueryComponent.java:613)
           at 
org.apache.solr.handler.component.QueryComponent.handleResponses(QueryComponent.java:592)
           at 
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:431)
           at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
           at org.apache.solr.core.SolrCore.execute(SolrCore.java:2578)
           at 
org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:780)
           at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:566)
           at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:423)
           at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:350)
           at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
           at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
   ...


I want to ask the community if I'm missing something or if this really is a bug.

Thanks in advance,
Marc
Marc Linden
Developer

Virtual Identity AG
Grünwälderstraße 10-14
79098 Freiburg

+49 761 20758-422
--

marc.lin...@virtual-identity.com
http://www.virtual-identity.com

Freiburg | München | Wien | Porto

________________________________

Virtual Identity AG
Grünwälderstraße 10-14
79098 Freiburg
Amtsgericht Freiburg, HRB 6218
Vorstand: Ralf Heller
Vorsitzende des Aufsichtsrates: Kirsten Heller
Umsatzsteuer-ID: DE208002218

Reply via email to