[ https://issues.apache.org/jira/browse/LUCENE-7674?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15855698#comment-15855698 ]
Adrien Grand commented on LUCENE-7674: -------------------------------------- It feels wrong to me that we enforce these rules at search time, while they should be enforced at index time. I think the true fix to all these block join issues would be to make Solr know queries that describe the parent and child spaces rather than expect users to provide them at search time. Then once it knows that, it could reject update/delete operations that would break the block structure, fail queries that use a parent query that is not one of the expected ones, maybe add a FILTER clause to the child query to restrict it to the child space in case some fields are used at multiple levels, etc. > java.lang.IllegalStateException: Child query must not match same docs with > parent filter. Combine them as must clauses (+) to find a problem doc. > docId=2147483647, class org.apache.lucene.search.ConjunctionScorer > -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: LUCENE-7674 > URL: https://issues.apache.org/jira/browse/LUCENE-7674 > Project: Lucene - Core > Issue Type: Bug > Affects Versions: 6.3 > Reporter: Tim Underwood > Attachments: LUCENE-7674.patch > > > Started seeing this error message on a production Solr 6.3.0 system today > making use of parent/child documents: > {code} > java.lang.IllegalStateException: Child query must not match same docs with > parent filter. Combine them as must clauses (+) to find a problem doc. > docId=2147483647, class org.apache.lucene.search.ConjunctionScorer > at > org.apache.lucene.search.join.ToParentBlockJoinQuery$BlockJoinScorer.checkOrthogonal(ToParentBlockJoinQuery.java:403) > at > org.apache.lucene.search.join.ToParentBlockJoinQuery$BlockJoinScorer.access$400(ToParentBlockJoinQuery.java:206) > at > org.apache.lucene.search.join.ToParentBlockJoinQuery$BlockJoinScorer$1.nextDoc(ToParentBlockJoinQuery.java:327) > at > org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:219) > at > org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:172) > at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39) > at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:669) > at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:473) > at > org.apache.solr.search.DocSetUtil.createDocSetGeneric(DocSetUtil.java:106) > at org.apache.solr.search.DocSetUtil.createDocSet(DocSetUtil.java:95) > at > org.apache.solr.search.SolrIndexSearcher.getDocSetNC(SolrIndexSearcher.java:1379) > at > org.apache.solr.search.SolrIndexSearcher.getPositiveDocSet(SolrIndexSearcher.java:1057) > at > org.apache.solr.search.SolrIndexSearcher.getProcessedFilter(SolrIndexSearcher.java:1227) > at > org.apache.solr.search.SolrIndexSearcher.getDocListAndSetNC(SolrIndexSearcher.java:1842) > at > org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1616) > at > org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:617) > at > org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:531) > at > org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:295) > at > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:153) > at org.apache.solr.core.SolrCore.execute(SolrCore.java:2213) > at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654) > at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:460) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:303) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:254) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1160) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1092) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) > at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) > at org.eclipse.jetty.server.Server.handle(Server.java:518) > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:244) > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) > at > org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) > at > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:246) > at > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:156) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) > at java.lang.Thread.run(Thread.java:745) > {code} > The "docId=2147483647" part seems suspicious since that corresponds to > Integer.MAX_VALUE and my index only has 102,013,289 docs in it. According to > the Solr searcher stats page I have: > numDocs: 71,870,998 > maxDocs: 102,013,289 > deletedDocs: 30,142,291 > I took the query that was failing and attempted to intersect my parent query > with the child query to find any problem docs but that came back with 0 > results. > After performing an optimize (via the Solr UI) on the index the problem has > gone away and the query that previously triggered this error works as it > should. -- This message was sent by Atlassian JIRA (v6.3.15#6346) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org