Knut Anders Hatlen created DERBY-5801:
-----------------------------------------
Summary: Sub-processes should write EMMA coverage data to separate
files
Key: DERBY-5801
URL: https://issues.apache.org/jira/browse/DERBY-5801
Project: Derby
Issue Type: Improvement
Components: Test
Affects Versions: 10.10.0.0
Reporter: Knut Anders Hatlen
Assignee: Knut Anders Hatlen
Priority: Minor
When generating EMMA coverage reports after running suites.All, I frequently
see that coverage.ec is corrupted, and no report is produced. Typical failures
look like this:
java.io.UTFDataFormatException: malformed input around byte 52
at java.io.DataInputStream.readUTF(DataInputStream.java:656)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at
com.vladium.emma.data.ClassDescriptor.readExternal(ClassDescriptor.java:171)
at com.vladium.emma.data.MetaData.readExternal(MetaData.java:228)
at com.vladium.emma.data.DataFactory.readEntry(DataFactory.java:770)
at com.vladium.emma.data.DataFactory.mergeload(DataFactory.java:461)
at com.vladium.emma.data.DataFactory.load(DataFactory.java:56)
at
com.vladium.emma.report.ReportProcessor._run(ReportProcessor.java:175)
at com.vladium.emma.Processor.run(Processor.java:54)
at com.vladium.emma.report.reportCommand.run(reportCommand.java:130)
at emma.main(emma.java:40)
or
Exception in thread "main" com.vladium.emma.EMMARuntimeException: unexpected
failure:
at com.vladium.emma.Command.exit(Command.java:237)
at com.vladium.emma.report.reportCommand.run(reportCommand.java:145)
at emma.main(emma.java:40)
Caused by: java.lang.OutOfMemoryError: Requested array size exceeds VM limit
at java.util.HashMap.<init>(HashMap.java:181)
at java.util.HashMap.<init>(HashMap.java:193)
at com.vladium.emma.data.MetaData.readExternal(MetaData.java:223)
at com.vladium.emma.data.DataFactory.readEntry(DataFactory.java:770)
at com.vladium.emma.data.DataFactory.mergeload(DataFactory.java:461)
at com.vladium.emma.data.DataFactory.load(DataFactory.java:56)
at
com.vladium.emma.report.ReportProcessor._run(ReportProcessor.java:175)
at com.vladium.emma.Processor.run(Processor.java:54)
at com.vladium.emma.report.reportCommand.run(reportCommand.java:130)
... 1 more
I suspect that the problem is that all sub-processes spawned by the main test
process write to the same file, sometimes multiple processes running at the
same time, and that the file gets corrupted because there's no coordination
between the processes when they're writing to it.
Experiments I have run also indicate that making the sub-processes write to
different files helps (I haven't managed to reproduce the corruption yet with
that change), so I suggest we make that change.
--
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