I opened a PR at https://github.com/apache/lucene/pull/12400 with a fix, I tried to explain in the PR description why AssertingScorer has this check. Even though it's not documented in BulkScorer#score, I think it's a good check to keep.
On Wed, Jun 28, 2023 at 6:25 AM Adrien Grand <jpou...@gmail.com> wrote: > > Thanks Patrick, I will look into it this morning. > > Le mer. 28 juin 2023, 06:20, Patrick Zhai <zhai7...@gmail.com> a écrit : >> >> Yeah I think that's the commit, I'm definitely not an expert on scorer as >> well so maybe @jpou...@gmail.com could you take a look? >> >> Patrick >> >> On Tue, Jun 27, 2023 at 5:34 AM Michael McCandless >> <luc...@mikemccandless.com> wrote: >>> >>> Thanks for digging Patrick! >>> >>> I sort of think MaxScoreBulkScorer should be returning NO_MORE_DOCS in this >>> case? But I'm far from an expert. This may be related to the recent >>> MAXScore improvements for disjunctions? >>> (https://github.com/apache/lucene/commit/8703e449cee0693e50a7922a86c1cbc7dcf95d13) >>> >>> Mike McCandless >>> >>> http://blog.mikemccandless.com >>> >>> >>> On Tue, Jun 27, 2023 at 2:34 AM Patrick Zhai <zhai7...@gmail.com> wrote: >>>> >>>> The exception was thrown because TimeLimitingBulkScorer passed in a "max" >>>> which is larger than the maxDoc in the segment. And then >>>> MaxScoreBulkScorer directly returns the rangeEnd as the next estimation >>>> here and finally makes AssertingBulkScorer unhappy because it expects a >>>> NO_MORE_DOC in case that the "max" or "next" is larger than maxDoc. (here) >>>> >>>> I'm not super sure what's the right fix, seems to me neither >>>> TimeLimitingBulkScorer nor MaxScoreBulkScorer has violated the contract >>>> (as we never state in javadoc guarantee that if there's no more doc the >>>> method will return NO_MORE_DOC), so perhaps we should just let >>>> AssertingBulkScorer tolerate the case? >>>> >>>> Patrick >>>> >>>> On Mon, Jun 26, 2023 at 10:54 PM Policeman Jenkins Server >>>> <jenk...@thetaphi.de> wrote: >>>>> >>>>> Build: https://jenkins.thetaphi.de/job/Lucene-9.x-Linux/11322/ >>>>> Java: 64bit/hotspot/jdk-17.0.5 -XX:-UseCompressedOops -XX:+UseSerialGC >>>>> >>>>> 1 tests failed. >>>>> FAILED: org.apache.lucene.expressions.TestExpressionSorts.testQueries >>>>> >>>>> Error Message: >>>>> java.lang.AssertionError >>>>> >>>>> Stack Trace: >>>>> java.lang.AssertionError >>>>> at >>>>> __randomizedtesting.SeedInfo.seed([9D337074B96D1F8C:C1BDBCAFA304AA22]:0) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.search.AssertingBulkScorer.score(AssertingBulkScorer.java:105) >>>>> at >>>>> org.apache.lucene.core@9.8.0-SNAPSHOT/org.apache.lucene.search.TimeLimitingBulkScorer.score(TimeLimitingBulkScorer.java:82) >>>>> at >>>>> org.apache.lucene.core@9.8.0-SNAPSHOT/org.apache.lucene.search.BulkScorer.score(BulkScorer.java:38) >>>>> at >>>>> org.apache.lucene.core@9.8.0-SNAPSHOT/org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:776) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.search.AssertingIndexSearcher.search(AssertingIndexSearcher.java:78) >>>>> at >>>>> org.apache.lucene.core@9.8.0-SNAPSHOT/org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:694) >>>>> at >>>>> org.apache.lucene.core@9.8.0-SNAPSHOT/org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:688) >>>>> at >>>>> org.apache.lucene.core@9.8.0-SNAPSHOT/org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:668) >>>>> at >>>>> org.apache.lucene.core@9.8.0-SNAPSHOT/org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:571) >>>>> at >>>>> org.apache.lucene.expressions.TestExpressionSorts.assertQuery(TestExpressionSorts.java:119) >>>>> at >>>>> org.apache.lucene.expressions.TestExpressionSorts.assertQuery(TestExpressionSorts.java:113) >>>>> at >>>>> org.apache.lucene.expressions.TestExpressionSorts.testQueries(TestExpressionSorts.java:92) >>>>> at >>>>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native >>>>> Method) >>>>> at >>>>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) >>>>> at >>>>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>> at java.base/java.lang.reflect.Method.invoke(Method.java:568) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:982) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:996) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44) >>>>> at >>>>> junit@4.13.1/org.junit.rules.RunRules.evaluate(RunRules.java:20) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60) >>>>> at >>>>> org.apache.lucene.test_framework@9.8.0-SNAPSHOT/org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47) >>>>> at >>>>> junit@4.13.1/org.junit.rules.RunRules.evaluate(RunRules.java:20) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) >>>>> at >>>>> randomizedtesting.runner@2.8.1/com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850) >>>>> at java.base/java.lang.Thread.run(Thread.java:833) >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: builds-unsubscr...@lucene.apache.org >>>>> For additional commands, e-mail: builds-h...@lucene.apache.org -- Adrien --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org