cool, i opened https://issues.apache.org/jira/browse/LUCENE-4938

We should still have explicit tests for this, and there is still the
mystery of how this test ever passed at all!

On Wed, Apr 17, 2013 at 12:18 PM, Simon Willnauer <[email protected]
> wrote:

> @rob you can add the fix too if you want that is fine I will roll another
> release anyways
>
> simon
>
>
> On Wed, Apr 17, 2013 at 9:14 PM, Robert Muir <[email protected]> wrote:
>
>> I'll open an issue. We should at least fix the test for 4.3 if possible
>> (the indexsearcher change can wait)
>>
>>
>> On Wed, Apr 17, 2013 at 9:19 AM, Robert Muir <[email protected]> wrote:
>>
>>> I see the bug (two bugs).
>>>
>>> One bug is the test does IndexSearcher.search(query, Integer.MAX_VALUE,
>>> sort)
>>>
>>> In the case of search-without-sort, there is some code that essentially
>>> does Math.min(maxdoc, ndoc) so that if you request more documents than
>>> actually exist in the index, we create a smaller priority queue. I think
>>> Uwe added that not so long ago. But this code isn't in search-with-sort...
>>> Index: lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
>>> ===================================================================
>>> --- lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
>>> (revision 1468947)
>>> +++ lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
>>> (working copy)
>>> @@ -511,6 +511,12 @@
>>>
>>>      if (sort == null) throw new NullPointerException("Sort must not be
>>> null");
>>>
>>> +    int limit = reader.maxDoc();
>>> +    if (limit == 0) {
>>> +      limit = 1;
>>> +    }
>>> +    nDocs = Math.min(nDocs, limit);
>>> +
>>>      if (executor == null) {
>>>        // use all leaves here!
>>>        return search(leafContexts, weight, after, nDocs, sort,
>>> fillFields, doDocScores, doMaxScore);
>>> Index:
>>> lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionQuerySort.java
>>> ===================================================================
>>> ---
>>> lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionQuerySort.java
>>> (revision 1468947)
>>> +++
>>> lucene/queries/src/test/org/apache/lucene/queries/function/TestFunctionQuerySort.java
>>> (working copy)
>>> @@ -69,7 +69,7 @@
>>>
>>>      // Get hits sorted by our FunctionValues (ascending values)
>>>      Query q = new MatchAllDocsQuery();
>>> -    TopDocs hits = searcher.search(q, Integer.MAX_VALUE, orderBy);
>>> +    TopDocs hits = searcher.search(q, reader.maxDoc(), orderBy);
>>>      assertEquals(NUM_VALS, hits.scoreDocs.length);
>>>      // Verify that sorting works in general
>>>      int i = 0;
>>> @@ -81,7 +81,7 @@
>>>      // Now get hits after hit #2 using IS.searchAfter()
>>>      int afterIdx = 1;
>>>      FieldDoc afterHit = (FieldDoc) hits.scoreDocs[afterIdx];
>>> -    hits = searcher.searchAfter(afterHit, q, Integer.MAX_VALUE,
>>> orderBy);
>>> +    hits = searcher.searchAfter(afterHit, q, reader.maxDoc(), orderBy);
>>>
>>>      // Expected # of hits: NUM_VALS - 2
>>>      assertEquals(NUM_VALS - (afterIdx + 1), hits.scoreDocs.length);
>>>
>>>
>>>  On Wed, Apr 17, 2013 at 10:54 AM, Policeman Jenkins Server <
>>> [email protected]> wrote:
>>>
>>>>  Build: http://jenkins.thetaphi.de/job/Lucene-Solr-trunk-Linux/5212/
>>>> Java: 32bit/jdk1.7.0_17 -client -XX:+UseG1GC
>>>>
>>>> 1 tests failed.
>>>> REGRESSION:
>>>>  
>>>> org.apache.lucene.queries.function.TestFunctionQuerySort.testSearchAfterWhenSortingByFunctionValues
>>>>
>>>> Error Message:
>>>> Requested array size exceeds VM limit
>>>>
>>>> Stack Trace:
>>>> java.lang.OutOfMemoryError: Requested array size exceeds VM limit
>>>>         at
>>>> __randomizedtesting.SeedInfo.seed([19CBB97056276D92:E7ABF8B5EEE0EA22]:0)
>>>>         at
>>>> org.apache.lucene.util.PriorityQueue.<init>(PriorityQueue.java:64)
>>>>         at
>>>> org.apache.lucene.util.PriorityQueue.<init>(PriorityQueue.java:37)
>>>>         at
>>>> org.apache.lucene.search.FieldValueHitQueue.<init>(FieldValueHitQueue.java:138)
>>>>         at
>>>> org.apache.lucene.search.FieldValueHitQueue.<init>(FieldValueHitQueue.java:34)
>>>>         at
>>>> org.apache.lucene.search.FieldValueHitQueue$OneComparatorFieldValueHitQueue.<init>(FieldValueHitQueue.java:63)
>>>>         at
>>>> org.apache.lucene.search.FieldValueHitQueue.create(FieldValueHitQueue.java:171)
>>>>         at
>>>> org.apache.lucene.search.TopFieldCollector.create(TopFieldCollector.java:1123)
>>>>         at
>>>> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:518)
>>>>         at
>>>> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:493)
>>>>         at
>>>> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:370)
>>>>         at
>>>> org.apache.lucene.queries.function.TestFunctionQuerySort.testSearchAfterWhenSortingByFunctionValues(TestFunctionQuerySort.java:72)
>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>         at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>>         at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>         at java.lang.reflect.Method.invoke(Method.java:601)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1559)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.RandomizedRunner.access$600(RandomizedRunner.java:79)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:737)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:773)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:787)
>>>>         at
>>>> org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:50)
>>>>         at
>>>> org.apache.lucene.util.TestRuleFieldCacheSanity$1.evaluate(TestRuleFieldCacheSanity.java:51)
>>>>         at
>>>> org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:46)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.rules.SystemPropertiesInvariantRule$1.evaluate(SystemPropertiesInvariantRule.java:55)
>>>>         at
>>>> org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:49)
>>>>         at
>>>> org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:70)
>>>>         at
>>>> org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:48)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:358)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:782)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:442)
>>>>         at
>>>> com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:746)
>>>>
>>>>
>>>>
>>>>
>>>> Build Log:
>>>> [...truncated 7591 lines...]
>>>> [junit4:junit4] Suite:
>>>> org.apache.lucene.queries.function.TestFunctionQuerySort
>>>> [junit4:junit4]   2> NOTE: reproduce with: ant test
>>>>  -Dtestcase=TestFunctionQuerySort
>>>> -Dtests.method=testSearchAfterWhenSortingByFunctionValues
>>>> -Dtests.seed=19CBB97056276D92 -Dtests.multiplier=3 -Dtests.slow=true
>>>> -Dtests.locale=be -Dtests.timezone=Pacific/Tongatapu
>>>> -Dtests.file.encoding=US-ASCII
>>>> [junit4:junit4] ERROR   0.58s J0 |
>>>> TestFunctionQuerySort.testSearchAfterWhenSortingByFunctionValues <<<
>>>> [junit4:junit4]    > Throwable #1: java.lang.OutOfMemoryError:
>>>> Requested array size exceeds VM limit
>>>> [junit4:junit4]    >    at
>>>> __randomizedtesting.SeedInfo.seed([19CBB97056276D92:E7ABF8B5EEE0EA22]:0)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.util.PriorityQueue.<init>(PriorityQueue.java:64)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.util.PriorityQueue.<init>(PriorityQueue.java:37)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.search.FieldValueHitQueue.<init>(FieldValueHitQueue.java:138)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.search.FieldValueHitQueue.<init>(FieldValueHitQueue.java:34)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.search.FieldValueHitQueue$OneComparatorFieldValueHitQueue.<init>(FieldValueHitQueue.java:63)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.search.FieldValueHitQueue.create(FieldValueHitQueue.java:171)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.search.TopFieldCollector.create(TopFieldCollector.java:1123)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:518)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:493)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:370)
>>>> [junit4:junit4]    >    at
>>>> org.apache.lucene.queries.function.TestFunctionQuerySort.testSearchAfterWhenSortingByFunctionValues(TestFunctionQuerySort.java:72)
>>>> [junit4:junit4]   2> NOTE: test params are: codec=Asserting,
>>>> sim=DefaultSimilarity, locale=be, timezone=Pacific/Tongatapu
>>>> [junit4:junit4]   2> NOTE: Linux 3.2.0-40-generic i386/Oracle
>>>> Corporation 1.7.0_17 (32-bit)/cpus=8,threads=1,free=7819088,total=18874368
>>>> [junit4:junit4]   2> NOTE: All tests run in this JVM:
>>>> [TestFunctionQuerySort]
>>>> [junit4:junit4] Completed on J0 in 0.81s, 1 test, 1 error <<< FAILURES!
>>>>
>>>> [...truncated 49 lines...]
>>>> BUILD FAILED
>>>> /mnt/ssd/jenkins/workspace/Lucene-Solr-trunk-Linux/build.xml:375: The
>>>> following error occurred while executing this line:
>>>> /mnt/ssd/jenkins/workspace/Lucene-Solr-trunk-Linux/build.xml:355: The
>>>> following error occurred while executing this line:
>>>> /mnt/ssd/jenkins/workspace/Lucene-Solr-trunk-Linux/build.xml:39: The
>>>> following error occurred while executing this line:
>>>> /mnt/ssd/jenkins/workspace/Lucene-Solr-trunk-Linux/lucene/build.xml:548:
>>>> The following error occurred while executing this line:
>>>> /mnt/ssd/jenkins/workspace/Lucene-Solr-trunk-Linux/lucene/common-build.xml:1789:
>>>> The following error occurred while executing this line:
>>>> /mnt/ssd/jenkins/workspace/Lucene-Solr-trunk-Linux/lucene/module-build.xml:61:
>>>> The following error occurred while executing this line:
>>>> /mnt/ssd/jenkins/workspace/Lucene-Solr-trunk-Linux/lucene/common-build.xml:1231:
>>>> The following error occurred while executing this line:
>>>> /mnt/ssd/jenkins/workspace/Lucene-Solr-trunk-Linux/lucene/common-build.xml:875:
>>>> There were test failures: 13 suites, 92 tests, 1 error
>>>>
>>>> Total time: 17 minutes 12 seconds
>>>> Build step 'Invoke Ant' marked build as failure
>>>> Archiving artifacts
>>>> Recording test results
>>>> Description set: Java: 32bit/jdk1.7.0_17 -client -XX:+UseG1GC
>>>> Email was triggered for: Failure
>>>> Sending email for trigger: Failure
>>>>
>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>>
>>>
>>>
>>
>

Reply via email to