NullPointerException with ExpandComponent on Collapsed Null Values

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

NullPointerException with ExpandComponent on Collapsed Null Values

austin@3bx.org.INVALID
Hi all,



I’m currently running 7.5.0 and am looking to use the collapse and expand
results functionality.



The field I’m attempting to collapse on is an “int” field that isn’t
required, and I’m using a null policy of expand to create a unique group
for each document that has a missing field.   The majority of documents *are
*missing this field at this time.



I’m running into a NullPointerException on the response from within the
ExpandComponent.  I’ve also tried the grouping with a field where I’ve
generated an ID (to cause the field to never be null), which seems to
resolve the issue.  I’m wondering if there’s some type of issue with how
Solr is handling the expansion of these null records.



Any thoughts?





Here’s an example request:



https://localhost:8985/solr/products/select?fq=%7B!collapse%20field%3DGroupId_i%20nullPolicy%3Dexpand%7D&qf=Name%5E100&start=0&rows=5&version=2.2&q=test&expand=true&expand.rows=1&sort=score%20desc&fl=ItemId



… and the response



<?xml version="1.0" encoding="UTF-8"?>

<response>

   <lst name="responseHeader">

      <bool name="zkConnected">true</bool>

      <int name="status">500</int>

      <int name="QTime">19</int>

      <lst name="params">

         <str name="q">test</str>

         <str name="expand">true</str>

         <str name="expand.rows">1</str>

         <str name="qf">Name^100</str>

         <str name="fl">ItemId</str>

         <str name="start">0</str>

         <str name="fq">{!collapse field=GroupId_i nullPolicy=expand}</str>

         <str name="sort">score desc</str>

         <str name="rows">5</str>

         <str name="version">2.2</str>

      </lst>

   </lst>

   <result name="response" numFound="46086" start="0">

      <doc>

         <int name="ItemId">186209</int>

      </doc>

      <doc>

         <int name="ItemId">3516830</int>

      </doc>

      <doc>

         <int name="ItemId">9764413</int>

      </doc>

      <doc>

         <int name="ProductID">9764705</int>

      </doc>

      <doc>

        <int name="ItemId">9764767</int>

      </doc>

   </result>

   <lst name="error">

      <str name="trace">java.lang.NullPointerException

        at
org.apache.solr.handler.component.ExpandComponent.process(ExpandComponent.java:351)

        at
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)

        at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)

        at org.apache.solr.core.SolrCore.execute(SolrCore.java:2541)

        at
org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:709)

        at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:515)

        at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:377)

        at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:323)

        at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)

        at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)

        at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)

        at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)

        at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

        at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)

        at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)

        at
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)

        at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)

        at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)

        at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)

        at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)

        at
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)

        at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)

        at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)

        at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)

        at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)

        at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

        at
org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)

        at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)

        at org.eclipse.jetty.server.Server.handle(Server.java:531)

        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)

        at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)

        at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)

        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)

        at
org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)

        at
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)

        at
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)

        at
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)

        at
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)

        at
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)

        at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)

        at
org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)

        at java.base/java.lang.Thread.run(Thread.java:834)</str>

      <int name="code">500</int>

   </lst>

</response>
Reply | Threaded
Open this post in threaded view
|

Re: NullPointerException with ExpandComponent on Collapsed Null Values

austin@3bx.org.INVALID
Just wanted to provide a bit more information on this issue after
experimenting a bit more.

The error I've described below only seems to occur when I'm
collapsing/expanding on an integer field.  If I switch the field type to a
string, no errors occur if there are missing field values within the
document set.  For now, this seems to be a workaround, but I'd be curious
if there is an issue or something I missed when trying to use this feature
with integers.


On Tue, May 28, 2019 at 3:22 PM [hidden email] <[hidden email]> wrote:

> Hi all,
>
>
>
> I’m currently running 7.5.0 and am looking to use the collapse and expand
> results functionality.
>
>
>
> The field I’m attempting to collapse on is an “int” field that isn’t
> required, and I’m using a null policy of expand to create a unique group
> for each document that has a missing field.   The majority of documents *are
> *missing this field at this time.
>
>
>
> I’m running into a NullPointerException on the response from within the
> ExpandComponent.  I’ve also tried the grouping with a field where I’ve
> generated an ID (to cause the field to never be null), which seems to
> resolve the issue.  I’m wondering if there’s some type of issue with how
> Solr is handling the expansion of these null records.
>
>
>
> Any thoughts?
>
>
>
>
>
> Here’s an example request:
>
>
>
>
> https://localhost:8985/solr/products/select?fq=%7B!collapse%20field%3DGroupId_i%20nullPolicy%3Dexpand%7D&qf=Name%5E100&start=0&rows=5&version=2.2&q=test&expand=true&expand.rows=1&sort=score%20desc&fl=ItemId
>
>
>
> … and the response
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <response>
>
>    <lst name="responseHeader">
>
>       <bool name="zkConnected">true</bool>
>
>       <int name="status">500</int>
>
>       <int name="QTime">19</int>
>
>       <lst name="params">
>
>          <str name="q">test</str>
>
>          <str name="expand">true</str>
>
>          <str name="expand.rows">1</str>
>
>          <str name="qf">Name^100</str>
>
>          <str name="fl">ItemId</str>
>
>          <str name="start">0</str>
>
>          <str name="fq">{!collapse field=GroupId_i nullPolicy=expand}</str>
>
>          <str name="sort">score desc</str>
>
>          <str name="rows">5</str>
>
>          <str name="version">2.2</str>
>
>       </lst>
>
>    </lst>
>
>    <result name="response" numFound="46086" start="0">
>
>       <doc>
>
>          <int name="ItemId">186209</int>
>
>       </doc>
>
>       <doc>
>
>          <int name="ItemId">3516830</int>
>
>       </doc>
>
>       <doc>
>
>          <int name="ItemId">9764413</int>
>
>       </doc>
>
>       <doc>
>
>          <int name="ProductID">9764705</int>
>
>       </doc>
>
>       <doc>
>
>         <int name="ProductID">9764767</int>
>
>       </doc>
>
>    </result>
>
>    <lst name="error">
>
>       <str name="trace">java.lang.NullPointerException
>
>         at
> org.apache.solr.handler.component.ExpandComponent.process(ExpandComponent.java:351)
>
>         at
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
>
>         at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
>
>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:2541)
>
>         at
> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:709)
>
>         at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:515)
>
>         at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:377)
>
>         at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:323)
>
>         at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
>
>         at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
>
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
>
>         at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
>
>         at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
>
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
>
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)
>
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
>
>         at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
>
>         at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
>
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
>
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)
>
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
>
>         at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)
>
>         at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
>
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>
>         at
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
>
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>
>         at org.eclipse.jetty.server.Server.handle(Server.java:531)
>
>         at
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
>
>         at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
>
>         at
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
>
>         at
> org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
>
>         at
> org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
>
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
>
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
>
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
>
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
>
>         at
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
>
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)
>
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)
>
>         at java.base/java.lang.Thread.run(Thread.java:834)</str>
>
>       <int name="code">500</int>
>
>    </lst>
>
> </response>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: NullPointerException with ExpandComponent on Collapsed Null Values

Joel Bernstein
This should be considered a bug. Feel free file jira for this.



Joel Bernstein
http://joelsolr.blogspot.com/


On Tue, Jun 4, 2019 at 9:16 AM [hidden email]
<[hidden email]> wrote:

> Just wanted to provide a bit more information on this issue after
> experimenting a bit more.
>
> The error I've described below only seems to occur when I'm
> collapsing/expanding on an integer field.  If I switch the field type to a
> string, no errors occur if there are missing field values within the
> document set.  For now, this seems to be a workaround, but I'd be curious
> if there is an issue or something I missed when trying to use this feature
> with integers.
>
>
> On Tue, May 28, 2019 at 3:22 PM [hidden email] <[hidden email]> wrote:
>
> > Hi all,
> >
> >
> >
> > I’m currently running 7.5.0 and am looking to use the collapse and expand
> > results functionality.
> >
> >
> >
> > The field I’m attempting to collapse on is an “int” field that isn’t
> > required, and I’m using a null policy of expand to create a unique group
> > for each document that has a missing field.   The majority of documents
> *are
> > *missing this field at this time.
> >
> >
> >
> > I’m running into a NullPointerException on the response from within the
> > ExpandComponent.  I’ve also tried the grouping with a field where I’ve
> > generated an ID (to cause the field to never be null), which seems to
> > resolve the issue.  I’m wondering if there’s some type of issue with how
> > Solr is handling the expansion of these null records.
> >
> >
> >
> > Any thoughts?
> >
> >
> >
> >
> >
> > Here’s an example request:
> >
> >
> >
> >
> >
> https://localhost:8985/solr/products/select?fq=%7B!collapse%20field%3DGroupId_i%20nullPolicy%3Dexpand%7D&qf=Name%5E100&start=0&rows=5&version=2.2&q=test&expand=true&expand.rows=1&sort=score%20desc&fl=ItemId
> >
> >
> >
> > … and the response
> >
> >
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> >
> > <response>
> >
> >    <lst name="responseHeader">
> >
> >       <bool name="zkConnected">true</bool>
> >
> >       <int name="status">500</int>
> >
> >       <int name="QTime">19</int>
> >
> >       <lst name="params">
> >
> >          <str name="q">test</str>
> >
> >          <str name="expand">true</str>
> >
> >          <str name="expand.rows">1</str>
> >
> >          <str name="qf">Name^100</str>
> >
> >          <str name="fl">ItemId</str>
> >
> >          <str name="start">0</str>
> >
> >          <str name="fq">{!collapse field=GroupId_i
> nullPolicy=expand}</str>
> >
> >          <str name="sort">score desc</str>
> >
> >          <str name="rows">5</str>
> >
> >          <str name="version">2.2</str>
> >
> >       </lst>
> >
> >    </lst>
> >
> >    <result name="response" numFound="46086" start="0">
> >
> >       <doc>
> >
> >          <int name="ItemId">186209</int>
> >
> >       </doc>
> >
> >       <doc>
> >
> >          <int name="ItemId">3516830</int>
> >
> >       </doc>
> >
> >       <doc>
> >
> >          <int name="ItemId">9764413</int>
> >
> >       </doc>
> >
> >       <doc>
> >
> >          <int name="ProductID">9764705</int>
> >
> >       </doc>
> >
> >       <doc>
> >
> >         <int name="ProductID">9764767</int>
> >
> >       </doc>
> >
> >    </result>
> >
> >    <lst name="error">
> >
> >       <str name="trace">java.lang.NullPointerException
> >
> >         at
> >
> org.apache.solr.handler.component.ExpandComponent.process(ExpandComponent.java:351)
> >
> >         at
> >
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
> >
> >         at
> >
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
> >
> >         at org.apache.solr.core.SolrCore.execute(SolrCore.java:2541)
> >
> >         at
> > org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:709)
> >
> >         at
> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:515)
> >
> >         at
> >
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:377)
> >
> >         at
> >
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:323)
> >
> >         at
> >
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
> >
> >         at
> >
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
> >
> >         at
> >
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
> >
> >         at
> >
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
> >
> >         at
> > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
> >
> >         at
> >
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> >
> >         at
> >
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
> >
> >         at
> >
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> >
> >         at org.eclipse.jetty.server.Server.handle(Server.java:531)
> >
> >         at
> > org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
> >
> >         at
> >
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
> >
> >         at
> > org.eclipse.jetty.io
> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
> >
> >         at
> > org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
> >
> >         at
> > org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
> >
> >         at
> >
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
> >
> >         at
> >
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
> >
> >         at
> >
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
> >
> >         at
> >
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
> >
> >         at
> >
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
> >
> >         at
> >
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)
> >
> >         at
> >
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)
> >
> >         at java.base/java.lang.Thread.run(Thread.java:834)</str>
> >
> >       <int name="code">500</int>
> >
> >    </lst>
> >
> > </response>
> >
> >
> >
>