The problem here is that TopScoreDocCollectorManager creates a priority
queue of 250_000 for every collector it creates. This test only ever
indexes max 1000 documents. In the case I examined we had 8 segments, which
get partitioned into 5 partitions each. That means we will build 40
priority queues of 250_000 items. This is a bit of an extreme case that's
far from reality, yet I wonder, is the problem the number of partitions or
the size of the priority queue, or both?

On Wed, Sep 11, 2024 at 7:39 AM Luca Cavanna <java...@apache.org> wrote:

> This may have to do with intra-segment concurrency. I will take a look.
>
> On Wed, Sep 11, 2024, 05:39 Policeman Jenkins Server <jenk...@thetaphi.de>
> wrote:
>
>> Build: https://jenkins.thetaphi.de/job/Lucene-main-Linux/50111/
>> Java: 64bit/hotspot/jdk-21.0.1 -XX:-UseCompressedOops -XX:+UseSerialGC
>>
>> 1 tests failed.
>> FAILED:
>> org.apache.lucene.sandbox.search.TestLargeNumHitsTopDocsCollector.testNoPQBuild
>>
>> Error Message:
>> java.lang.OutOfMemoryError: Java heap space
>>
>> Stack Trace:
>> java.lang.OutOfMemoryError: Java heap space
>>         at
>> __randomizedtesting.SeedInfo.seed([2E3BF44EC3457CCA:DA6EA4532975FABD]:0)
>>         at org.apache.lucene.core@10.0.0-SNAPSHOT
>> /org.apache.lucene.search.HitQueue.lambda$new$0(HitQueue.java:70)
>>         at 
>> org.apache.lucene.core@10.0.0-SNAPSHOT/org.apache.lucene.search.HitQueue$$Lambda/0x000071d2ec233150.get(Unknown
>> Source)
>>         at org.apache.lucene.core@10.0.0-SNAPSHOT
>> /org.apache.lucene.util.PriorityQueue.<init>(PriorityQueue.java:105)
>>         at org.apache.lucene.core@10.0.0-SNAPSHOT
>> /org.apache.lucene.search.HitQueue.<init>(HitQueue.java:63)
>>         at org.apache.lucene.core@10.0.0-SNAPSHOT
>> /org.apache.lucene.search.TopScoreDocCollector.<init>(TopScoreDocCollector.java:203)
>>         at org.apache.lucene.core@10.0.0-SNAPSHOT
>> /org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector.<init>(TopScoreDocCollector.java:50)
>>         at org.apache.lucene.core@10.0.0-SNAPSHOT
>> /org.apache.lucene.search.TopScoreDocCollectorManager.newCollector(TopScoreDocCollectorManager.java:140)
>>         at org.apache.lucene.core@10.0.0-SNAPSHOT
>> /org.apache.lucene.search.TopScoreDocCollectorManager.newCollector(TopScoreDocCollectorManager.java:28)
>>         at org.apache.lucene.core@10.0.0-SNAPSHOT
>> /org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:741)
>>         at org.apache.lucene.core@10.0.0-SNAPSHOT
>> /org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:725)
>>         at
>> org.apache.lucene.sandbox.search.TestLargeNumHitsTopDocsCollector.testNoPQBuild(TestLargeNumHitsTopDocsCollector.java:111)
>>         at
>> java.base/java.lang.invoke.LambdaForm$DMH/0x000071d2ec114000.invokeVirtual(LambdaForm$DMH)
>>         at
>> java.base/java.lang.invoke.LambdaForm$MH/0x000071d2ec0bc800.invoke(LambdaForm$MH)
>>         at
>> java.base/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder)
>>         at
>> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153)
>>         at
>> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
>>         at java.base/java.lang.reflect.Method.invoke(Method.java:580)
>>         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@10.0.0-SNAPSHOT
>> /org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:48)
>>         at org.apache.lucene.test_framework@10.0.0-SNAPSHOT
>> /org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
>>         at org.apache.lucene.test_framework@10.0.0-SNAPSHOT
>> /org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
>>         at org.apache.lucene.test_framework@10.0.0-SNAPSHOT
>> /org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
>>         at org.apache.lucene.test_framework@10.0.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)
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: builds-unsubscr...@lucene.apache.org
>> For additional commands, e-mail: builds-h...@lucene.apache.org
>
>

Reply via email to