You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Hoss Man (JIRA)" <ji...@apache.org> on 2015/11/16 23:38:11 UTC

[jira] [Updated] (SOLR-8295) collapse parser can trigger NPE when a segment has empty DocValues for collapse field (ie: no doc in segment has a value)

     [ https://issues.apache.org/jira/browse/SOLR-8295?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hoss Man updated SOLR-8295:
---------------------------
    Description: When collapsing on a field that doesn't exist for all documents, the existence of a segment that does not contain any documents that have a value can cause an NPE as the collapse parser assumes the DocValues for a segment will always be non-null.  (was: From https://builds.apache.org/job/Lucene-Solr-Tests-trunk-Java8/629/ - reproduces for me:
{noformat}
   [junit4]   2> NOTE: reproduce with: ant test  -Dtestcase=TestRandomCollapseQParserPlugin -Dtests.method=testRandomCollpaseWithSort -Dtests.seed=EB40CE4410753BB -Dtests.multiplier=2 -Dtests.slow=true -Dtests.locale=es_PY -Dtests.timezone=Asia/Oral -Dtests.asserts=true -Dtests.file.encoding=US-ASCII
   [junit4] ERROR   11.7s J2 | TestRandomCollapseQParserPlugin.testRandomCollpaseWithSort <<<
   [junit4]    > Throwable #1: org.apache.solr.client.solrj.SolrServerException: org.apache.solr.client.solrj.SolrServerException: java.lang.NullPointerException
   [junit4]    > 	at __randomizedtesting.SeedInfo.seed([EB40CE4410753BB:B097F2D6AAF6048]:0)
   [junit4]    > 	at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:240)
   [junit4]    > 	at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:150)
   [junit4]    > 	at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:943)
   [junit4]    > 	at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:958)
   [junit4]    > 	at org.apache.solr.search.TestRandomCollapseQParserPlugin.testRandomCollpaseWithSort(TestRandomCollapseQParserPlugin.java:164)
   [junit4]    > 	at java.lang.Thread.run(Thread.java:745)
   [junit4]    > Caused by: org.apache.solr.client.solrj.SolrServerException: java.lang.NullPointerException
   [junit4]    > 	at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.checkForExceptions(EmbeddedSolrServer.java:252)
   [junit4]    > 	at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:180)
   [junit4]    > 	... 43 more
   [junit4]    > Caused by: java.lang.NullPointerException
   [junit4]    > 	at org.apache.solr.search.CollapsingQParserPlugin$IntFieldValueCollector.collect(CollapsingQParserPlugin.java:1109)
   [junit4]    > 	at org.apache.lucene.search.MatchAllDocsQuery$1$1.score(MatchAllDocsQuery.java:56)
   [junit4]    > 	at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
   [junit4]    > 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:670)
   [junit4]    > 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:474)
   [junit4]    > 	at org.apache.solr.search.SolrIndexSearcher.buildAndRunCollectorChain(SolrIndexSearcher.java:203)
   [junit4]    > 	at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1692)
   [junit4]    > 	at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1508)
   [junit4]    > 	at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:562)
   [junit4]    > 	at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:519)
   [junit4]    > 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:276)
   [junit4]    > 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:151)
   [junit4]    > 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:2079)
   [junit4]    > 	at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:179)
   [junit4]    > 	... 43 more
{noformat})
        Summary: collapse parser can trigger NPE when a segment has empty DocValues for collapse field (ie: no doc in segment has a value)  (was: TestRandomCollapseQParserPlugin.testRandomCollapseWithSort() NPE)

Updated summary & description to clarify root cause.  
The underlying bug predates SOLR-6168, (i think it has been arround for as long as the collapse parser has existed?) but was uncovered due to random testing added by that issue.

Initial report...

{panel}
>From https://builds.apache.org/job/Lucene-Solr-Tests-trunk-Java8/629/ - reproduces for me:
{noformat}
   [junit4]   2> NOTE: reproduce with: ant test  -Dtestcase=TestRandomCollapseQParserPlugin -Dtests.method=testRandomCollpaseWithSort -Dtests.seed=EB40CE4410753BB -Dtests.multiplier=2 -Dtests.slow=true -Dtests.locale=es_PY -Dtests.timezone=Asia/Oral -Dtests.asserts=true -Dtests.file.encoding=US-ASCII
   [junit4] ERROR   11.7s J2 | TestRandomCollapseQParserPlugin.testRandomCollpaseWithSort <<<
   [junit4]    > Throwable #1: org.apache.solr.client.solrj.SolrServerException: org.apache.solr.client.solrj.SolrServerException: java.lang.NullPointerException
   [junit4]    > 	at __randomizedtesting.SeedInfo.seed([EB40CE4410753BB:B097F2D6AAF6048]:0)
   [junit4]    > 	at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:240)
   [junit4]    > 	at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:150)
   [junit4]    > 	at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:943)
   [junit4]    > 	at org.apache.solr.client.solrj.SolrClient.query(SolrClient.java:958)
   [junit4]    > 	at org.apache.solr.search.TestRandomCollapseQParserPlugin.testRandomCollpaseWithSort(TestRandomCollapseQParserPlugin.java:164)
   [junit4]    > 	at java.lang.Thread.run(Thread.java:745)
   [junit4]    > Caused by: org.apache.solr.client.solrj.SolrServerException: java.lang.NullPointerException
   [junit4]    > 	at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.checkForExceptions(EmbeddedSolrServer.java:252)
   [junit4]    > 	at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:180)
   [junit4]    > 	... 43 more
   [junit4]    > Caused by: java.lang.NullPointerException
   [junit4]    > 	at org.apache.solr.search.CollapsingQParserPlugin$IntFieldValueCollector.collect(CollapsingQParserPlugin.java:1109)
   [junit4]    > 	at org.apache.lucene.search.MatchAllDocsQuery$1$1.score(MatchAllDocsQuery.java:56)
   [junit4]    > 	at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
   [junit4]    > 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:670)
   [junit4]    > 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:474)
   [junit4]    > 	at org.apache.solr.search.SolrIndexSearcher.buildAndRunCollectorChain(SolrIndexSearcher.java:203)
   [junit4]    > 	at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1692)
   [junit4]    > 	at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1508)
   [junit4]    > 	at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:562)
   [junit4]    > 	at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:519)
   [junit4]    > 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:276)
   [junit4]    > 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:151)
   [junit4]    > 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:2079)
   [junit4]    > 	at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:179)
   [junit4]    > 	... 43 more
{noformat}
{panel}


> collapse parser can trigger NPE when a segment has empty DocValues for collapse field (ie: no doc in segment has a value)
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-8295
>                 URL: https://issues.apache.org/jira/browse/SOLR-8295
>             Project: Solr
>          Issue Type: Bug
>            Reporter: Steve Rowe
>            Assignee: Hoss Man
>
> When collapsing on a field that doesn't exist for all documents, the existence of a segment that does not contain any documents that have a value can cause an NPE as the collapse parser assumes the DocValues for a segment will always be non-null.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org