<< Back to previous view

[QB-2146] Out of memory while parsing big junit xml file (again)
Created: 30/Jul/14  Updated: 24/Jan/18

Status: Closed
Project: QuickBuild
Component/s: None
Affects Version/s: 5.1.29
Fix Version/s: None

Type: Bug Priority: Critical
Reporter: Piotr Jedrys Assigned To: Steve Luo
Resolution: Won't Fix Votes: 0
Remaining Estimate: Unknown Time Spent: Unknown
Original Estimate: Unknown


 Description   
Eventhough we have -Xms64m -Xmx1024m we still have exception for heap space. The bug was already created before, and marked as fixed (http://track.pmease.com/browse/QB-2001) but apparently not:

04:55:55,952 ERROR - Step 'master>TestRunner Container Android Reflection and Performance>TestRunner Publishing Android Artifacts>TestRunner JUnit Report Android' is failed.
    com.pmease.quickbuild.plugin.report.engine.exception.DatabaseException: Open database [/opt/buildagent/temp/abstractpublisher9628dbf2-f8e4-4577-8183-632ab679314d/Release Android Performance] failed. Database status [No active connections].
        at com.pmease.quickbuild.plugin.report.engine.datastore.DbStore.open(DbStore.java:355)
        at com.pmease.quickbuild.plugin.report.engine.metadata.ReportCategory.saveReport(ReportCategory.java:367)
        at com.pmease.quickbuild.plugin.report.engine.generator.DefaultGenerator.saveDestReport(DefaultGenerator.java:81)
        at com.pmease.quickbuild.plugin.report.engine.generator.DefaultGenerator.afterExecute(DefaultGenerator.java:55)
        at com.pmease.quickbuild.plugin.report.engine.generator.GenerateAction.execute(GenerateAction.java:43)
        at com.pmease.quickbuild.plugin.report.engine.generator.DefaultGenerator.generate(DefaultGenerator.java:37)
        at com.pmease.quickbuild.plugin.report.engine.contribution.publisher.AbstractPublisher.doPublish(AbstractPublisher.java:162)
        at com.pmease.quickbuild.plugin.report.junit.JUnitPublisher$$EnhancerByCGLIB$$729525a7.CGLIB$doPublish$38(<generated>)
        at com.pmease.quickbuild.plugin.report.junit.JUnitPublisher$$EnhancerByCGLIB$$729525a7$$FastClassByCGLIB$$33f1b512.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215)
        at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:273)
        at com.pmease.quickbuild.plugin.report.junit.JUnitPublisher$$EnhancerByCGLIB$$729525a7.doPublish(<generated>)
        at com.pmease.quickbuild.plugin.report.engine.contribution.publisher.AbstractPublisher.run(AbstractPublisher.java:129)
        at com.pmease.quickbuild.plugin.report.junit.JUnitPublisher$$EnhancerByCGLIB$$729525a7.CGLIB$run$31(<generated>)
        at com.pmease.quickbuild.plugin.report.junit.JUnitPublisher$$EnhancerByCGLIB$$729525a7$$FastClassByCGLIB$$33f1b512.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215)
        at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:273)
        at com.pmease.quickbuild.plugin.report.junit.JUnitPublisher$$EnhancerByCGLIB$$729525a7.run(<generated>)
        at com.pmease.quickbuild.stepsupport.Step.execute(Step.java:539)
        at com.pmease.quickbuild.stepsupport.StepExecutionJob.executeStepAwareJob(StepExecutionJob.java:30)
        at com.pmease.quickbuild.stepsupport.StepAwareJob.executeBuildAwareJob(StepAwareJob.java:45)
        at com.pmease.quickbuild.BuildAwareJob.execute(BuildAwareJob.java:60)
        at com.pmease.quickbuild.grid.GridJob.run(GridJob.java:73)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
    Caused by: com.pmease.quickbuild.plugin.report.engine.exception.DatabaseException: Unable to get connection from database url: jdbc:h2:/opt/buildagent/temp/abstractpublisher9628dbf2-f8e4-4577-8183-632ab679314d/Release Android Performance/junit
        at com.pmease.quickbuild.plugin.report.engine.datastore.ConnectionManager.getConnection(ConnectionManager.java:25)
        at com.pmease.quickbuild.plugin.report.engine.datastore.DbStore.getConnection(DbStore.java:384)
        at com.pmease.quickbuild.plugin.report.engine.datastore.DbStore.open(DbStore.java:349)
        ... 28 more
    Caused by: org.h2.jdbc.JdbcSQLException: Out of memory. [90108-175]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:332)
        at org.h2.message.DbException.get(DbException.java:161)
        at org.h2.message.DbException.convert(DbException.java:278)
        at org.h2.engine.Database.openDatabase(Database.java:274)
        at org.h2.engine.Database.<init>(Database.java:239)
        at org.h2.engine.Engine.openSession(Engine.java:58)
        at org.h2.engine.Engine.openSession(Engine.java:162)
        at org.h2.engine.Engine.createSessionAndValidate(Engine.java:141)
        at org.h2.engine.Engine.createSession(Engine.java:124)
        at org.h2.engine.Engine.createSession(Engine.java:30)
        at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:323)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:105)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:90)
        at org.h2.Driver.connect(Driver.java:73)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at com.pmease.quickbuild.plugin.report.engine.datastore.ConnectionManager.getConnection(ConnectionManager.java:23)
        ... 30 more
    Caused by: java.lang.OutOfMemoryError: Java heap space

 Comments   
Comment by Steve Luo [ 30/Jul/14 03:31 PM ]
We added a setting in JUnit plugin to solve the issue described in QB-2001: huge system-out element (85M) causes out of memory.

If this is still your current case (huge system-out/system-err tag, like 85M or more), please go to administration page -> Plugin Mangement and configure JUnit plugin, make sure you have a small size for storing system output.

And please also read the discussion in issue QB-2031 which is also related to huge system-out. If your system-out or system-err tag has huge data, Java need a lot of memory to read it, so you may still have to add more memory to avoid this error.

Also, if possible, you can send your original XML file to us so that we can know more about this issue.
Generated at Wed May 08 14:53:43 UTC 2024 using JIRA 189.