OutOfMemoryError: Java heap space for Birt viewer

Options
patsuyash
edited February 11, 2022 in Analytics #1
Hi All,<br />
I'm working on following specs:<br />
1)Apache Tomcat/6.0.35<br />
with environment vars as <pre class='_prettyXprint _lang-auto _linenums:0'>JAVA_OPTS=-Xms1024m -Xmx2048m -XX:MaxPermSize=512m</pre> <br />
2) Birt 3.7 installed on eclipse (although i used 4.2.1 runtime let me know this is correct or I have find 3.7 runtime) <br />
3) struts2 web app with <pre class='_prettyXprint _lang-auto _linenums:0'><constant name="struts.action.excludePattern" value="/frameset*,/run*,/download*,/parameter*,/document*,/output*,/extract*,/preview*"/>
</pre>in struts.xml .<br />
<br />
I have some reports containing cross tabs with 2 rows and some 50-70 records, which work fine when run on "strut2 action" class. I have some requirement where the I have to use birt's native viewer.So I had all the config for that purpose into my web-app (Like copying all contents from "WebViewerExample" to my app and appending web.xml etc). I tested these setting by running the test.rptdesign in my app which was successful.<br />
But when I tried to execute my reports then there this exception.<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0" java.lang.OutOfMemoryError: Java heap space
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
9 Oct, 2012 11:19:05 AM org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor processChildren
SEVERE: Exception invoking periodic operation:
java.lang.OutOfMemoryError: Java heap space
- com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1a84fae -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
- com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1a84fae -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 2
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@fd5609 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1b6c74 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@6d65fd
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,]
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
java.text.MessageFormat.applyPattern(Unknown Source)
java.text.MessageFormat.<init>(Unknown Source)
java.text.MessageFormat.format(Unknown Source)
com.mysql.jdbc.Messages.getString(Messages.java:108)
com.mysql.jdbc.ConnectionPropertiesImpl.<init>(ConnectionPropertiesImpl.java:1690)
com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:683)
com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
com.mysql.jdbc.ResultSetRow.getString(ResultSetRow.java:799)
com.mysql.jdbc.ByteArrayRow.getString(ByteArrayRow.java:72)
com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5699)
com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5576)
com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:933)
com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3373)
com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2328)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)


</pre>
<br />
<br />
I also tried changing BIRT_VIEWER_CUBE_MEMORY_SIZE to 1024,...<br />
<br />
still had same exception thrown<br />
<br />
<br />
update: the abow error came I used /frameset url pattern.<br />
<br />
But I tried to hit same report using /output url pattern. retaining constant BIRT_VIEWER_CUBE_MEMORY_SIZE to 1024 <br />
then I got exception.<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>org.eclipse.birt.data.engine.core.DataException: A report document error occurred when getting the save stream.
The archive file has been closed.
at org.eclipse.birt.data.engine.api.DataEngineContext.getOutputStream(DataEngineContext.java:364)
at org.eclipse.birt.data.engine.impl.DataEngineSession$ReportDocumentShutdownListener.saveNamingRelation(DataEngineSession.java:480)
at org.eclipse.birt.data.engine.impl.DataEngineSession$ReportDocumentShutdownListener.dataEngineShutdown(DataEngineSession.java:460)
at org.eclipse.birt.data.engine.impl.DataEngineImpl.shutdown(DataEngineImpl.java:569)
at org.eclipse.birt.report.data.adapter.impl.DataRequestSessionImpl.shutdown(DataRequestSessionImpl.java:517)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.shutdown(AbstractDataEngine.java:350)
at org.eclipse.birt.report.engine.data.dte.DataGenerationEngine.shutdown(DataGenerationEngine.java:154)
at org.eclipse.birt.report.engine.executor.ExecutionContext.close(ExecutionContext.java:483)
at org.eclipse.birt.report.engine.api.impl.EngineTask.close(EngineTask.java:1613)
at org.eclipse.birt.report.engine.api.impl.RunTask.close(RunTask.java:316)
at org.eclipse.birt.report.service.ReportEngineService.runReport(ReportEngineService.java:1346)
at org.eclipse.birt.report.service.BirtViewerReportService.runReport(BirtViewerReportService.java:158)
at org.eclipse.birt.report.service.actionhandler.BirtRunReportActionHandler.__execute(BirtRunReportActionHandler.java:81)
at org.eclipse.birt.report.service.actionhandler.BirtGetPageActionHandler.__checkDocumentExists(BirtGetPageActionHandler.java:58)
at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.prepareParameters(AbstractGetPageActionHandler.java:119)
at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.__execute(AbstractGetPageActionHandler.java:104)
at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90)
at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(AbstractBaseDocumentProcessor.java:47)
at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(AbstractBaseComponentProcessor.java:143)
at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPage(BirtDocumentProcessor.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(AbstractBaseComponentProcessor.java:112)
at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(BirtSoapBindingImpl.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: The archive file has been closed.
at org.eclipse.birt.core.archive.compound.ArchiveFile.createEntry(ArchiveFile.java:423)
at org.eclipse.birt.core.archive.compound.ArchiveWriter.openRandomAccessStream(ArchiveWriter.java:69)
at org.eclipse.birt.data.engine.api.DataEngineContext.getOutputStream(DataEngineContext.java:355)
... 61 more</pre>

Comments

  • JasonW
    edited December 31, 1969 #2
    Options
    Where are you setting the Java opts? I set mine in the catalina.bat

    set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=256m

    Jason
  • patsuyash
    edited December 31, 1969 #3
    Options
    <blockquote class='ipsBlockquote' data-author="'JasonW'" data-cid="110305" data-time="1349805731" data-date="09 October 2012 - 11:02 AM"><p>
    Where are you setting the Java opts? I set mine in the catalina.bat<br />
    <br />
    set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=256m<br />
    <br />
    Jason<br /></p></blockquote>
    <br />
    Hi Jason,<br />
    I working and deploying this project on tomcat through eclipse(Helios) and first i set the java_opts var as shown in attachment asd.jpg
    > Parent Classloader:
    org.apache.catalina.loader.StandardClassLoader@1e63e3d
    , webapplication.projectclasspath=};maxRowsPerQuery=-1;BIRT_HOME=;logLevel=FINEST;PLATFORM_CONTEXT=org.eclipse.birt.core.framework.PlatformServletContext@1cebc9f;org.eclipse.birt.report.engine.api.EngineConfig.emitterConfigs={html=org.eclipse.birt.report.engine.api.HTMLRenderOption@1c1ac46};logDest=c:/test;
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager getExtensions
    FINE: Start load extension point: org.eclipse.birt.report.engine.reportitemGeneration
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadGenerationExtensionDefns
    FINE: Load generation extension: Chart
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager getExtensions
    FINE: Start load extension point: org.eclipse.birt.report.engine.reportitemPresentation
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadPresentationExtensionDefns
    FINE: Load prsentation extension: Chart
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager getExtensions
    FINE: Start load extension point: org.eclipse.birt.report.engine.reportitemQuery
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadQueryExtensionDefns
    FINE: Load query extension: Chart
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager getExtensions
    FINE: Start load extension point: org.eclipse.birt.report.engine.emitters
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadEmitterExtensionDefns
    FINE: Load html emitter org.eclipse.birt.report.engine.emitter.html
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadEmitterExtensionDefns
    FINE: Load pdf emitter org.eclipse.birt.report.engine.emitter.pdf
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadEmitterExtensionDefns
    FINE: Load postscript emitter org.eclipse.birt.report.engine.emitter.postscript
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadEmitterExtensionDefns
    FINE: Load ppt emitter org.eclipse.birt.report.engine.emitter.ppt
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadEmitterExtensionDefns
    FINE: Load xls emitter org.eclipse.birt.report.engine.emitter.prototype.excel
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadEmitterExtensionDefns
    FINE: Load doc emitter org.eclipse.birt.report.engine.emitter.word
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadEmitterExtensionDefns
    FINE: Load odp emitter org.eclipse.birt.report.engine.emitter.odp
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadEmitterExtensionDefns
    FINE: Load ods emitter org.eclipse.birt.report.engine.emitter.prototype.ods
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadEmitterExtensionDefns
    FINE: Load odt emitter org.eclipse.birt.report.engine.emitter.odt
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager getExtensions
    FINE: Start load extension point: org.eclipse.birt.report.engine.reportEventHandler
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager getExtensions
    FINE: Start load extension point: org.eclipse.birt.report.engine.reportItemPreparation
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager getExtensions
    FINE: Start load extension point: org.eclipse.birt.report.engine.dataExtraction
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadDataExtractionExtensions
    FINE: Load data extraction extension: org.eclipse.birt.report.engine.dataextraction.csv
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager getExtensions
    FINE: Start load extension point: org.eclipse.birt.report.engine.extendedItemFactory
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadExtendedItems
    FINE: Load extendedItem extension: Crosstab
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadExtendedItems
    FINE: Load extendedItem extension: CrosstabCell
    11 Oct, 2012 11:45:56 AM org.eclipse.birt.report.engine.extension.internal.ExtensionManager loadExtendedItems
    FINE: Load extendedItem extension: AggregationCell
    11 Oct, 2012 11:46:28 AM org.eclipse.birt.report.engine.api.impl.EngineTask handleFatalExceptions
    SEVERE: There is insufficient memory to execute this report.

    </pre>
  • mwilliams
    edited December 31, 1969 #4
    Options
    This looks like heap space, not permGen. Can you try making Xms and Xmx 2048m in all locations, to see if that fixes the issue?
    Warning No formatter is installed for the format ipb