Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
4.8.1, 4.9.1, 4.10.1, 4.10.3, 4.10.4, 5.1, 5.2, 5.2.1, 5.3
-
None
-
None
Description
The problem is that Solr 4.10.3, CollapsingFieldValueCollector.finish(CollapsingQParserPlugin.java:632) is looking ahead to the next segment. When you use the CollapsingQParser only once that look-ahead is always populated because each segment is processed by the scorers. The CollapsingQParser plugin does not process every segment though, it stops when it runs out of documents that have been collected. So the look-ahead can cause a null pointer in the second Collapse. This is a problem in every version of the CollapsingQParserPlugin.
Below is the original description from Markus which is another NPE during a look-ahead in Solr 5.1:
Not even sure it would work anyway, i tried to collapse on two distinct fields, ending up with this:
select?q=:&fq=
{!collapse field=qst}&fq=
{!collapse field=rdst}584550 [qtp1121454968-20] ERROR org.apache.solr.servlet.SolrDispatchFilter [ suggests] – null:java.lang.NullPointerException at org.apache.solr.search.CollapsingQParserPlugin$IntScoreCollector.finish(CollapsingQParserPlugin.java:743) at org.apache.solr.search.CollapsingQParserPlugin$IntScoreCollector.finish(CollapsingQParserPlugin.java:780) at org.apache.solr.search.SolrIndexSearcher.buildAndRunCollectorChain(SolrIndexSearcher.java:203) at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1660) at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1479) at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:556) at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:518) at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:222) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143) at org.apache.solr.core.SolrCore.execute(SolrCore.java:1984) at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:829) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:446) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:220) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:368) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72) at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) at java.lang.Thread.run(Thread.java:745)
Attachments
Issue Links
- is related to
-
SOLR-8807 NPE during spell checking when result collapsing is activated and index got more than one segment.
- Closed
-
SOLR-9104 NPE in CollapsingQParser when two fq={!collapse} and zero results
- Closed
-
SOLR-14073 Fix segment look ahead NPE in CollapsingQParserPlugin
- Closed