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

Reply via email to