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

Reply via email to