Grace, if you'd like to set up a Jira account, you're welcome to; there are instructions here on how to get that set up:
https://infra.apache.org/jira-guidelines.html#who (we should update the Solr "community" section and contributor guidelines to clarify this initial Jira account setup step, which is relatively recent) On Mon, Feb 6, 2023 at 10:35 PM Michael Gibney <mich...@michaelgibney.net> wrote: > > I do suspect this is MLT-specific -- I'm not exactly sure how this is > _supposed_ to work (I'm unfamiliar with MLT), but something seems a > bit off between these two spots: > https://github.com/apache/solr/blob/257c93c956a66f805e23f4835cab88e7a1fe9201/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java#L219-L221 > https://github.com/apache/solr/blob/83de120de950fee3876a9e3a6b344b403630ae06/solr/core/src/java/org/apache/solr/request/SimpleFacets.java#L223-L226 > > The former constructs a ResponseBuilder object, but doesn't init it at > all -- afaict getQuery() and getFilters() and many other methods on > the resulting ResponseBuilder object will always return null/empty? > The comment in the latter snippet of code suggests that > `SimpleFacets.rb == null` is expected to have some semantic > significance, maybe even particularly coming from MLT? So perhaps > constructing an uninitialized ResponseBuilder object in MLT violates > some opaque assumptions/logic in SimpleFacets, in a way that isn't > actually exercised unless `tagMap != null`. > > In running the test patch locally, it seems the NPE is actually thrown > on the _key_ (Query -- maybe a consequence of the uninitialized > ResponseBuilder?), so I think this may never even get to the point of > generating a null DocSet. > > On Mon, Feb 6, 2023 at 3:35 PM Mikhail Khludnev <m...@apache.org> wrote: > > > > 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! --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org For additional commands, e-mail: dev-h...@solr.apache.org