lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LUCENE-3463) Jenkins trunk tests (nightly only) fail quite often with OOM in Automaton/FST tests
Date Sat, 01 Oct 2011 11:28:45 GMT

    [ https://issues.apache.org/jira/browse/LUCENE-3463?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13118723#comment-13118723
] 

Uwe Schindler commented on LUCENE-3463:
---------------------------------------

Some further issue hunting showed the followinbg problems with the current patch, that make
it almost impossible to implement correctly without redesigning RandomCodecProvider in LTC:
- Mike have seen problems with running all tests and suddenly got errors about missing "SimpleText"
or "Memory" codec. The reason is simple: once a field uses a codec this is preserved to infinity
in the previousMappings map. This problem could be solved by clearing the map before each
test class/test method. The field->codec mappings are not random, they are based on a a
final per codec-provider instance seed and the field's hashcode and modulo the size of codecs.
- My patch violates the reproducibility, as unregistering and readding a codec from the RandomCodecProvider
changes the order in the list and modifies the selection of codecs based on field name. Theoretically,
RandomCodecProvider should not allow any modifications to its registered codecs after creating
(and the swapCodecs operations in LTC).

A possible solution might be to have two RCPs created by LTC and only exchanging them based
on annotation. Problem is that both still have separate mappings from field name to codec
-> does not work if you reuse indexes across test methods. Another possible solution might
be to enable a lowMemory mode for RCP (via a setter, I already implemented that somehow),
so it just never returns memory/simpletext (maybe replace by standard codec). Problem here
again, the mapping from field name to codec is preserved for all codecs, but if a mapping
to a simpletext/memory codec already exists for field name, it cannot be used (so the fieldname
is "dead" for this test. This is also a no-go.

I think we should move the annotation, as Robert suggests, up to the class, so all methods
in a class will get the reduced set of codecs. Before each class (beforeClass) we cleanup
the codec provider and recreate a new one according to the annotation. The easy way is then
(as we did for some other tests, too), to move the tests that should not run on simpletext/memory
to separate classes - this is the easiest way to go.
                
> Jenkins trunk tests (nightly only) fail quite often with OOM in Automaton/FST tests
> -----------------------------------------------------------------------------------
>
>                 Key: LUCENE-3463
>                 URL: https://issues.apache.org/jira/browse/LUCENE-3463
>             Project: Lucene - Java
>          Issue Type: Bug
>    Affects Versions: 4.0
>            Reporter: Uwe Schindler
>             Fix For: 4.0
>
>         Attachments: LUCENE-3463.patch, LUCENE-3463.patch, LUCENE-3463.patch, LUCENE-3463.patch
>
>
> The nightly Job Lucene-trunk quite often fails with OOM (in several methods, not always
in the same test):
> Example from last night (this time a huge Automaton):
> {noformat}
> [junit] java.lang.OutOfMemoryError: Java heap space
> [junit] Dumping heap to /home/hudson/hudson-slave/workspace/Lucene-trunk/heapdumps/java_pid38855.hprof
...
> [junit] Heap dump file created [86965954 bytes in 1.186 secs]
> [junit] Testsuite: org.apache.lucene.index.TestTermsEnum
> [junit] Testcase: testIntersectRandom(org.apache.lucene.index.TestTermsEnum):	Caused
an ERROR
> [junit] Java heap space
> [junit] java.lang.OutOfMemoryError: Java heap space
> [junit] 	at org.apache.lucene.util.automaton.RunAutomaton.<init>(RunAutomaton.java:128)
> [junit] 	at org.apache.lucene.util.automaton.ByteRunAutomaton.<init>(ByteRunAutomaton.java:28)
> [junit] 	at org.apache.lucene.util.automaton.CompiledAutomaton.<init>(CompiledAutomaton.java:134)
> [junit] 	at org.apache.lucene.index.TestTermsEnum.testIntersectRandom(TestTermsEnum.java:266)
> [junit] 	at org.apache.lucene.util.LuceneTestCase$2$1.evaluate(LuceneTestCase.java:611)
> [junit] 	at org.apache.lucene.util.LuceneTestCaseRunner.runChild(LuceneTestCaseRunner.java:148)
> [junit] 	at org.apache.lucene.util.LuceneTestCaseRunner.runChild(LuceneTestCaseRunner.java:50)
> [junit] 
> [junit] 
> [junit] Tests run: 6, Failures: 0, Errors: 1, Time elapsed: 11.699 sec
> {noformat}
> Other traces:
> {noformat}
> [junit] Testsuite: org.apache.lucene.util.fst.TestFSTs
> [junit] Testcase: testRealTerms(org.apache.lucene.util.fst.TestFSTs):	Caused an ERROR
> [junit] Java heap space
> [junit] java.lang.OutOfMemoryError: Java heap space
> [junit] 	at org.apache.lucene.util.ArrayUtil.grow(ArrayUtil.java:338)
> [junit] 	at org.apache.lucene.util.fst.FST$BytesWriter.writeBytes(FST.java:927)
> [junit] 	at org.apache.lucene.util.fst.ByteSequenceOutputs.write(ByteSequenceOutputs.java:113)
> [junit] 	at org.apache.lucene.util.fst.ByteSequenceOutputs.write(ByteSequenceOutputs.java:32)
> [junit] 	at org.apache.lucene.util.fst.FST.addNode(FST.java:451)
> [junit] 	at org.apache.lucene.util.fst.NodeHash.add(NodeHash.java:122)
> [junit] 	at org.apache.lucene.util.fst.Builder.compileNode(Builder.java:180)
> [junit] 	at org.apache.lucene.util.fst.Builder.finish(Builder.java:495)
> [junit] 	at org.apache.lucene.index.codecs.memory.MemoryCodec$TermsWriter.finish(MemoryCodec.java:232)
> [junit] 	at org.apache.lucene.index.FreqProxTermsWriterPerField.flush(FreqProxTermsWriterPerField.java:414)
> [junit] 	at org.apache.lucene.index.FreqProxTermsWriter.flush(FreqProxTermsWriter.java:92)
> [junit] 	at org.apache.lucene.index.TermsHash.flush(TermsHash.java:117)
> [junit] 	at org.apache.lucene.index.DocInverter.flush(DocInverter.java:80)
> [junit] 	at org.apache.lucene.index.DocFieldProcessor.flush(DocFieldProcessor.java:78)
> [junit] 	at org.apache.lucene.index.DocumentsWriterPerThread.flush(DocumentsWriterPerThread.java:472)
> [junit] 	at org.apache.lucene.index.DocumentsWriter.doFlush(DocumentsWriter.java:420)
> [junit] 	at org.apache.lucene.index.DocumentsWriter.flushAllThreads(DocumentsWriter.java:568)
> [junit] 	at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:366)
> [junit] 	at org.apache.lucene.index.IndexReader.open(IndexReader.java:317)
> [junit] 	at org.apache.lucene.util.fst.TestFSTs.testRealTerms(TestFSTs.java:1034)
> [junit] 	at org.apache.lucene.util.LuceneTestCase$2$1.evaluate(LuceneTestCase.java:611)
> {noformat}
> or:
> {noformat}
> [junit] Testsuite: org.apache.lucene.util.automaton.TestCompiledAutomaton
> [junit] Testcase: testRandom(org.apache.lucene.util.automaton.TestCompiledAutomaton):
Caused an ERROR
> [junit] Java heap space
> [junit] java.lang.OutOfMemoryError: Java heap space
> [junit] 	at org.apache.lucene.util.automaton.RunAutomaton.<init>(RunAutomaton.java:128)
> [junit] 	at org.apache.lucene.util.automaton.ByteRunAutomaton.<init>(ByteRunAutomaton.java:28)
> [junit] 	at org.apache.lucene.util.automaton.CompiledAutomaton.<init>(CompiledAutomaton.java:134)
> [junit] 	at org.apache.lucene.util.automaton.TestCompiledAutomaton.build(TestCompiledAutomaton.java:39)
> [junit] 	at org.apache.lucene.util.automaton.TestCompiledAutomaton.testTerms(TestCompiledAutomaton.java:55)
> [junit] 	at org.apache.lucene.util.automaton.TestCompiledAutomaton.testRandom(TestCompiledAutomaton.java:101)
> [junit] 	at org.apache.lucene.util.LuceneTestCase$2$1.evaluate(LuceneTestCase.java:611)
> [junit] 	at org.apache.lucene.util.LuceneTestCaseRunner.runChild(LuceneTestCaseRunner.java:148)
> [junit] 	at org.apache.lucene.util.LuceneTestCaseRunner.runChild(LuceneTestCaseRunner.java:50)
> {noformat}
> Almost every nightly test fails, history: [https://builds.apache.org/job/Lucene-trunk]
> We should maybe raise the max heap space or reduce doc counts/...

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message