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
<https://github.com/apache/lucene/blob/main/lucene/core/src/java/org/apache/lucene/search/MaxScoreBulkScorer.java#L187>
and
finally makes AssertingBulkScorer unhappy because it expects a NO_MORE_DOC
in case that the "max" or "next" is larger than maxDoc. (here
<https://github.com/apache/lucene/blob/main/lucene/test-framework/src/java/org/apache/lucene/tests/search/AssertingBulkScorer.java#L104>
)

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 <
[email protected]> 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 [email protected]
> /org.apache.lucene.tests.search.AssertingBulkScorer.score(AssertingBulkScorer.java:105)
>         at [email protected]
> /org.apache.lucene.search.TimeLimitingBulkScorer.score(TimeLimitingBulkScorer.java:82)
>         at [email protected]
> /org.apache.lucene.search.BulkScorer.score(BulkScorer.java:38)
>         at [email protected]
> /org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:776)
>         at [email protected]
> /org.apache.lucene.tests.search.AssertingIndexSearcher.search(AssertingIndexSearcher.java:78)
>         at [email protected]
> /org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:694)
>         at [email protected]
> /org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:688)
>         at [email protected]
> /org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:668)
>         at [email protected]
> /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 [email protected]
> /com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:982)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:996)
>         at [email protected]
> /org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
>         at [email protected]
> /org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
>         at [email protected]
> /org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
>         at [email protected]
> /org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
>         at [email protected]
> /org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
>         at [email protected]
> /org.junit.rules.RunRules.evaluate(RunRules.java:20)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
>         at [email protected]
> /org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at [email protected]
> /org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at [email protected]
> /org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
>         at [email protected]
> /org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
>         at [email protected]
> /org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
>         at [email protected]
> /org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
>         at [email protected]
> /org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
>         at [email protected]
> /org.junit.rules.RunRules.evaluate(RunRules.java:20)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
>         at [email protected]
> /com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
>         at java.base/java.lang.Thread.run(Thread.java:833)
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]

Reply via email to