Return-Path: X-Original-To: apmail-db-derby-dev-archive@www.apache.org Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8161F9E91 for ; Thu, 7 Jun 2012 09:06:25 +0000 (UTC) Received: (qmail 83608 invoked by uid 500); 7 Jun 2012 09:06:25 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 83571 invoked by uid 500); 7 Jun 2012 09:06:24 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 83538 invoked by uid 99); 7 Jun 2012 09:06:23 -0000 Received: from issues-vm.apache.org (HELO issues-vm) (140.211.11.160) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 Jun 2012 09:06:23 +0000 Received: from isssues-vm.apache.org (localhost [127.0.0.1]) by issues-vm (Postfix) with ESMTP id 4734D140BEF for ; Thu, 7 Jun 2012 09:06:23 +0000 (UTC) Date: Thu, 7 Jun 2012 09:06:23 +0000 (UTC) From: "Knut Anders Hatlen (JIRA)" To: derby-dev@db.apache.org Message-ID: <1996295547.47013.1339059983293.JavaMail.jiratomcat@issues-vm> In-Reply-To: <415539702.46995.1339059383264.JavaMail.jiratomcat@issues-vm> Subject: [jira] [Updated] (DERBY-5801) Sub-processes should write EMMA coverage data to separate files MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/DERBY-5801?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Knut Anders Hatlen updated DERBY-5801: -------------------------------------- Attachment: separate.diff Attached is the patch I used for my experiments. It makes the sub-processes write coverage data to coverage-1.ec, coverage-2.ec, ..., instead of the coverage.ec file written to by the main test process. I created the test reports by running EMMA manually on the generated ec files when I ran these experiments, not by using the emma-all or emma-single ant targets. The final patch will have to update those targets as well so that they pick up all the ec files and not just coverage.ec. > 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 > Attachments: separate.diff > > > 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.(HashMap.java:181) > at java.util.HashMap.(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