Devs, heads up!

At first glance this failure doesn't look like mlt specific. It just falls
down on NPE when it has no result (null docset, ha!) in fq and then
attempts to cache null. Not good, you know. I hope I'm wrong.

$ git diff
diff --git
a/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.ja
va b/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
index c218b08938e..bac430b12d4 100644
---
a/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
+++
b/solr/core/src/test/org/apache/solr/handler/MoreLikeThisHandlerTest.java
@@ -246,6 +246,14 @@ public class MoreLikeThisHandlerTest extends
SolrTestCaseJ4 {
           "//result/doc[1]/str[@name='id'][.='45']",

 "//lst[@name='facet_counts']/lst[@name='facet_fields']/lst[@name='name'
]/int[@name='George'][.='1']");
     }
+    params.set("facet.field", "{!ex=tg}name");
+    params.set("fq","{!tag=tg}name:NoGeorge");
+    try(SolrQueryRequest mltreq = new LocalSolrQueryRequest(core, params)){
+      assertQ(
+              mltreq,
+              "//result/doc[1]/str[@name='id'][.='45']",
+
 "//lst[@name='facet_counts']/lst[@name='facet_fields']/lst[@name='n
ame']/int[@name='George'][.='1']");
+    }
   }

   @Test


java.lang.NullPointerException: null
at java.util.Objects.requireNonNull(Objects.java:221) ~[?:?]
at
com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2585)
~[caffeine-3.1.2.jar:?]
at
com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:106)
~[caffeine-3.1.2.jar:?]
at
com.github.benmanes.caffeine.cache.LocalManualCache.get(LocalManualCache.java:62)
~[caffeine-3.1.2.jar:?]
at
org.apache.solr.search.CaffeineCache.computeIfAbsent(CaffeineCache.java:254)
~[main/:?]
at
org.apache.solr.search.SolrIndexSearcher.getAndCacheDocSet(SolrIndexSearcher.java:972)
~[main/:?]
at
org.apache.solr.search.SolrIndexSearcher.getPositiveDocSet(SolrIndexSearcher.java:928)
~[main/:?]
at
org.apache.solr.search.SolrIndexSearcher.getProcessedFilter(SolrIndexSearcher.java:1186)
~[main/:?]
at
org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:1097)
~[main/:?]
at
org.apache.solr.request.SimpleFacets.computeDocSet(SimpleFacets.java:258)
~[main/:?]
at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:216)
~[main/:?]
at
org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:898)
~[main/:?]
at
org.apache.solr.handler.component.FacetComponent.getFacetCounts(FacetComponent.java:337)
~[main/:?]
at
org.apache.solr.handler.component.FacetComponent.getFacetCounts(FacetComponent.java:299)
~[main/:?]
at
org.apache.solr.handler.MoreLikeThisHandler.handleRequestBody(MoreLikeThisHandler.java:223)
~[main/:?]
at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:224)
~[main/:?]
at org.apache.solr.core.SolrCore.execute(SolrCore.java:2890) ~[main/:?]
at org.apache.solr.util.TestHarness.query(TestHarness.java:357)
~[solr-test-framework-10.0.0-SNAPSHOT.jar:10.0.0-SNAPSHOT
04ea6dfe56c9a4c914d3dae34577433fd574cd25 [snapshot build, details omitted]]

On Mon, Feb 6, 2023 at 9:43 PM Grace Sainsbury <grac...@gmail.com> wrote:

> Hi Mikhail,
>
> I don't have an account to file a JIRA ticket.
>
> Grace
>
> On Mon, 6 Feb 2023 at 13:37, Mikhail Khludnev <m...@apache.org> wrote:
>
> > Hello, Grace.
> > It seems like a bug deserves a JIRA issue at least.
> >
> > On Mon, Feb 6, 2023 at 9:07 PM Grace Sainsbury <grac...@gmail.com>
> wrote:
> >
> > > I have a MoreLikeThis query handler set up on my index:
> > >
> > > <requestHandler name="/mlt" class="solr.MoreLikeThisHandler">
> > >     <lst name="defaults">
> > >       <str name="echoParams">all</str>
> > >       <int name="rows">10</int>
> > >        <str name="mlt.fl">text</str>
> > >     </lst>
> > >   </requestHandler>
> > >
> > > If I use faceting on a query with no no tagging and exclusion
> everything
> > > works as expected. eg:
> > >
> > >
> > >
> >
> /mlt?facet.field=genre&facet.mincount=1&facet=true&fq=genre:{GENRE_VALUE}&indent=true&q.op=OR&q=id:{
> > > DOCUMENT_ID}
> > >
> > > If I add tagging and exclusion the facet counts are not returned and I
> > get
> > > a null pointer exception:
> > >
> > >
> > >
> >
> mlt?facet.field={!ex=g}genre&facet.mincount=1&facet=true&fq={!tag=g}genre:{GENRE_VALUE}&indent=true&q.op=OR&q=id:{DOCUMENT_ID}
> > >
> > > This is the stack trace:
> > >
> > > java.lang.NullPointerException
> > > > at java.base/java.util.Objects.requireNonNull(Objects.java:208)
> > > > at
> > > >
> > >
> >
> com.github.benmanes.caffeine.cache.BoundedLocalCache.put(BoundedLocalCache.java:2196)
> > > > at
> > > >
> > >
> >
> com.github.benmanes.caffeine.cache.BoundedLocalCache.putIfAbsent(BoundedLocalCache.java:2182)
> > > > at
> > > >
> > >
> >
> com.github.benmanes.caffeine.cache.LocalAsyncCache$AsyncAsMapView.putIfAbsent(LocalAsyncCache.java:316)
> > > > at
> > > >
> > >
> >
> com.github.benmanes.caffeine.cache.LocalAsyncCache$AsyncAsMapView.putIfAbsent(LocalAsyncCache.java:291)
> > > > at
> > > >
> > org.apache.solr.search.CaffeineCache.computeAsync(CaffeineCache.java:209)
> > > > at
> > > >
> > >
> >
> org.apache.solr.search.CaffeineCache.computeIfAbsent(CaffeineCache.java:250)
> > > > at
> > > >
> > >
> >
> org.apache.solr.search.SolrIndexSearcher.getAndCacheDocSet(SolrIndexSearcher.java:970)
> > > > at
> > > >
> > >
> >
> org.apache.solr.search.SolrIndexSearcher.getPositiveDocSet(SolrIndexSearcher.java:927)
> > > > at
> > > >
> > >
> >
> org.apache.solr.search.SolrIndexSearcher.getProcessedFilter(SolrIndexSearcher.java:1192)
> > > > at
> > > >
> > >
> >
> org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:1091)
> > > > at
> > > >
> > org.apache.solr.request.SimpleFacets.computeDocSet(SimpleFacets.java:258)
> > > > at
> > > org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:216)
> > > > at
> > > >
> > >
> >
> org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:898)
> > > > at
> > > >
> > >
> >
> org.apache.solr.handler.component.FacetComponent.getFacetCounts(FacetComponent.java:337)
> > > > at
> > > >
> > >
> >
> org.apache.solr.handler.component.FacetComponent.getFacetCounts(FacetComponent.java:299)
> > > > at
> > > >
> > >
> >
> org.apache.solr.handler.MoreLikeThisHandler.handleRequestBody(MoreLikeThisHandler.java:223)
> > > > at
> > > >
> > >
> >
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:224)
> > > > at org.apache.solr.core.SolrCore.execute(SolrCore.java:2865)
> > > > at
> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:887)
> > > > at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:606)
> > > > at
> > > >
> > >
> >
> org.apache.solr.servlet.SolrDispatchFilter.dispatch(SolrDispatchFilter.java:250)
> > > > at
> > > >
> > >
> >
> org.apache.solr.servlet.SolrDispatchFilter.lambda$doFilter$0(SolrDispatchFilter.java:218)
> > > > at
> > > >
> > >
> >
> org.apache.solr.servlet.ServletUtils.traceHttpRequestExecution2(ServletUtils.java:257)
> > > > at
> > > >
> > >
> >
> org.apache.solr.servlet.ServletUtils.rateLimitRequest(ServletUtils.java:227)
> > > > at
> > > >
> > >
> >
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:213)
> > > > at
> > > >
> > >
> >
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:195)
> > > > at
> > org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
> > > > at
> > > >
> > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.InetAccessHandler.handle(InetAccessHandler.java:177)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:322)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:772)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
> > > > at org.eclipse.jetty.server.Server.handle(Server.java:516)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
> > > > at
> org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
> > > > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
> > > > at
> > > > org.eclipse.jetty.io
> > > .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
> > > > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
> > > > at org.eclipse.jetty.io
> > .ChannelEndPoint$1.run(ChannelEndPoint.java:104)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
> > > > at
> > > >
> > >
> >
> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
> > > > at java.base/java.lang.Thread.run(Thread.java:833)
> > > >
> > >
> > > Is there an issue with my configuration?
> > >
> > > Thanks,
> > > Grace
> > >
> >
> >
> > --
> > Sincerely yours
> > Mikhail Khludnev
> > https://t.me/MUST_SEARCH
> > A caveat: Cyrillic!
> >
>


-- 
Sincerely yours
Mikhail Khludnev
https://t.me/MUST_SEARCH
A caveat: Cyrillic!

Reply via email to