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] >> > >
