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

Anurag Sharma commented on SOLR-6469:
-------------------------------------

Highlighter component assumes that rb.resultIds has a valid data and is not 
null. When query is formed in shard+grouping+highlight case rb.resultIds is 
coming as null because in groupedFinishStage  after merging groups resultIds 
becomes reinitialized and old ids are lost. So at the time of highlighting it 
throw NPE.

Attaching the patch that fixes the issue but it's without a unit test. Tested 
the fix directly on server and it doesn't show NPE any more. While writing the 
Unit test facing issue of running the shard. Here is the unit test code snippet:
{code}
+      assertQ("Shards+highlight+Grouping", 
+          req(CommonParams.Q, "text:(AAA)", 
+              CommonParams.QT, "/elevate",
+              CommonParams.SORT, "id asc",
+              GroupParams.GROUP_SORT, "id asc", 
+              GroupParams.GROUP_QUERY,"text:AAA",
+              GroupParams.GROUP, "true",
+              CommonParams.FL, "id",
+              HighlightParams.HIGHLIGHT,"true",
+              ShardParams.SHARDS,"localhost/solr/elevated")
+          ,"//lst[@name='highlighting']"
+          );
{code}

Please suggest if anyone knows how to write unit test for this case.

> Solr search with multicore + grouping + highlighting cause NPE
> --------------------------------------------------------------
>
>                 Key: SOLR-6469
>                 URL: https://issues.apache.org/jira/browse/SOLR-6469
>             Project: Solr
>          Issue Type: Bug
>          Components: highlighter, multicore, SearchComponents - other
>    Affects Versions: 4.8.1
>         Environment: Windows 7, Intellij
>            Reporter: Shay Sofer
>              Labels: patch
>         Attachments: SOLR-6469.patch
>
>
> Integration of Grouping + shards + highlighting cause NullPointerException.
> Query: 
> localhost:8983/solr/Global_A/select?q=%2Btext%3A%28shay*%29+&rows=100&fl=id%2CobjId%2Cnull&shards=http%3A%2F%2F127.0.0.1%3A8983%2Fsolr%2F0_A%2Chttp%3A%2F%2F127.0.0.1%3A8983%2Fsolr%2FGlobal_A&group=true&group.query=name__s%3Ashay&sort=name__s_sort+asc&hl=true
> results:
> java.lang.NullPointerException
>  at 
> org.apache.solr.handler.component.HighlightComponent.finishStage(HighlightComponent.java:189)
>  at 
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:330)
>  at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
>  at org.apache.solr.core.SolrCore.execute(SolrCore.java:1952)
>  at 
> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:774)
>  at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:418)
>  at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207)
>  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:722)



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

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

Reply via email to