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

Isabelle Giguere edited comment on SOLR-8921 at 10/19/18 7:49 PM:
------------------------------------------------------------------

I'm attaching unit tests, with 2 collections, and a few fields in the schema.
But, this issue has nothing do do with the number of collections, and not much 
to do with the field types.
An NPE can happen if the string that is used as facet pivot value is a 
stopword, or an empty string.

PivotFacetProcessor.getDocSet(DocSet base, SchemaField field, String pivotValue)

// if pivotValue = "a", or if pivotValue = "in" (stopword)
ft.getFieldQuery(null, field, pivotValue)
  -> returns null
 searcher.getDocSet(query, base);
  -> throws NPE
  
// if pivotValue = ""  (empty str)
 ft.getFieldQuery(null, field, pivotValue)
  -> returned query= name:
 searcher.getDocSet(query, base);
  -> returns DocSet size -1
  -> NPE could be thrown from PivotFacetProcessor.getSubsetSize(DocSet base, 
SchemaField field, String pivotValue) (? - to validate)

*******************
Maybe it is more likely to happen on multiple collections if the collections 
are meant for different languages, and a non-stopword in one language is a 
stopword in another language ?





was (Author: igiguere):
I'm attaching unit tests, with 2 collections, and a few fields in the schema.
But, this issue has nothing do do with the number of collections, and not much 
to do with the field types.
An NPE can happen if the string that is used as facet pivot value is a 
stopword, or an empty string.

PivotFacetProcessor.getDocSet(DocSet base, SchemaField field, String pivotValue)

// if pivotValue = "a", or if pivotValue = "in" (stopword)
ft.getFieldQuery(null, field, pivotValue)
  -> returns null
 searcher.getDocSet(query, base);
  -> throws NPE
  
// if pivotValue = ""  (empty str)
 ft.getFieldQuery(null, field, pivotValue)
  -> returned query= name:
 searcher.getDocSet(query, base);
  -> returns DocSet size -1
  -> NPE could be thrown from PivotFacetProcessor.getSubsetSize(DocSet base, 
SchemaField field, String pivotValue) (? - to validate)




> Potential NPE in pivot facet
> ----------------------------
>
>                 Key: SOLR-8921
>                 URL: https://issues.apache.org/jira/browse/SOLR-8921
>             Project: Solr
>          Issue Type: Bug
>    Affects Versions: 5.4.1
>            Reporter: Steve Molloy
>            Priority: Major
>         Attachments: SOLR-8921.patch, SOLR-8921.patch, 
> SOLR-8921_tag_7.5.0.patch, SOLR-8921_unit-tests_tag_7.5.0.patch
>
>
> For some queries distributed over multiple collections, I've hit a NPE when 
> SolrIndexSearcher tries to fetch results from cache. Basically, query 
> generated to compute pivot on document sub set is null, causing the NPE on 
> lookup.
> 2016-03-28 11:34:58.361 ERROR (qtp268141378-751) [c:otif_fr s:shard1 
> r:core_node1 x:otif_fr_shard1_replica1] o.a.s.h.RequestHandlerBase 
> java.lang.NullPointerException
>       at 
> java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
>       at 
> org.apache.solr.util.ConcurrentLFUCache.get(ConcurrentLFUCache.java:92)
>       at org.apache.solr.search.LFUCache.get(LFUCache.java:153)
>       at 
> org.apache.solr.search.SolrIndexSearcher.getPositiveDocSet(SolrIndexSearcher.java:940)
>       at 
> org.apache.solr.search.SolrIndexSearcher.numDocs(SolrIndexSearcher.java:2098)
>       at 
> org.apache.solr.handler.component.PivotFacetProcessor.getSubsetSize(PivotFacetProcessor.java:356)
>       at 
> org.apache.solr.handler.component.PivotFacetProcessor.processSingle(PivotFacetProcessor.java:219)
>       at 
> org.apache.solr.handler.component.PivotFacetProcessor.process(PivotFacetProcessor.java:167)
>       at 
> org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:263)
>       at 
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:273)
>       at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:156)
>       at org.apache.solr.core.SolrCore.execute(SolrCore.java:2073)
>       at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:658)
>       at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:457)
>       at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:223)
>       at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:181)
>       at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
>       at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
>       at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
>       at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
>       at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
>       at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
>       at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
>       at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
>       at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
>       at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>       at 
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
>       at 
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
>       at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
>       at org.eclipse.jetty.server.Server.handle(Server.java:499)
>       at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
>       at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
>       at 
> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
>       at java.lang.Thread.run(Thread.java:745)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to