Return-Path: Delivered-To: apmail-incubator-jackrabbit-dev-archive@www.apache.org Received: (qmail 21607 invoked from network); 4 Feb 2006 11:28:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 4 Feb 2006 11:28:18 -0000 Received: (qmail 4942 invoked by uid 500); 4 Feb 2006 11:28:15 -0000 Mailing-List: contact jackrabbit-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: jackrabbit-dev@incubator.apache.org Delivered-To: mailing list jackrabbit-dev@incubator.apache.org Received: (qmail 4931 invoked by uid 99); 4 Feb 2006 11:28:15 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 04 Feb 2006 03:28:15 -0800 X-ASF-Spam-Status: No, hits=1.4 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (asf.osuosl.org: 193.19.192.5 is neither permitted nor denied by domain of the.mindstorm.mailinglist@gmail.com) Received: from [193.19.192.5] (HELO mail.evolva.ro) (193.19.192.5) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 04 Feb 2006 03:28:14 -0800 Received: (qmail 52155 invoked by uid 1013); 4 Feb 2006 11:27:51 -0000 Received: from 86.55.40.139 by mail.evolva.ro (envelope-from , uid 89) with qmail-scanner-1.25 (clamdscan: 0.87.1/1244. Clear:RC:1(86.55.40.139):. Processed in 0.059678 secs); 04 Feb 2006 11:27:51 -0000 Received: from unknown (HELO ?192.168.62.51?) (alexandru.popescu@evolva.ro@86.55.40.139) by mail.evolva.ro with AES256-SHA encrypted SMTP; 4 Feb 2006 11:27:51 -0000 Message-ID: <43E48F8B.1000801@gmail.com> Date: Sat, 04 Feb 2006 13:27:07 +0200 From: Alexandru Popescu User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051201 Thunderbird/1.5 Mnenhy/0.7.3.0 MIME-Version: 1.0 To: jackrabbit-dev@incubator.apache.org Subject: Re: OutOfMemory while running tests References: <43E4896F.8070405@gmail.com> In-Reply-To: <43E4896F.8070405@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N #: Alexandru Popescu changed the world a bit at a time by saying (astral date: 2/4/2006 1:01 PM) :# > Hi! > > I have a set of tests (more or less unit tests). Considering that I want to be able to run some of > them individually or all of them I have each TestCase returning a RepositoryLifecycleTestSetup (that > is registering/unregistering the test repository). > > [code] > public class MyTestClass extends TestCase { > public static Test suite() { > return new RepositoryLifecycleTestSetup(new TestSuite(MyTestClass.class)); > } > > [...] > } > [/code] > > [code] > package org.apache.portals.graffito.jcr; > > import org.apache.portals.graffito.jcr.repository.RepositoryUtil; > > import junit.extensions.TestSetup; > import junit.framework.Test; > > > /** > * This class/interface > */ > public class RepositoryLifecycleTestSetup extends TestSetup { > public RepositoryLifecycleTestSetup(Test test) { > super(test); > } > > /** > * @see junit.extensions.TestSetup#setUp() > */ > protected void setUp() throws Exception { > super.setUp(); > RepositoryUtil.registerRepository("repositoryTest", > "./src/test-config/repository-derby.xml", "./target/repository"); > } > > /** > * @see junit.extensions.TestSetup#tearDown() > */ > protected void tearDown() throws Exception { > RepositoryUtil.unRegisterRepository("repositoryTest"); > super.tearDown(); > } > > > } > [/code] > > While running test by test this works as expected, when trying to run all tests in the package I hit > quite soon an OutOfMemory problem: > > [stacktrace] > javax.jcr.RepositoryException: failed to write node state: 86d66b84-96c3-434c-bf0c-5bd7630cb254: > Java exception: 'Java heap space: java.lang.OutOfMemoryError'.: failed to write node state: > 86d66b84-96c3-434c-bf0c-5bd7630cb254: Java exception: 'Java heap space: java.lang.OutOfMemoryError'. > at > org.apache.jackrabbit.core.version.VersionManagerImpl.createVersionHistory(VersionManagerImpl.java:273) > at > org.apache.jackrabbit.core.version.VersionManagerImpl.createVersionHistory(VersionManagerImpl.java:193) > at org.apache.jackrabbit.core.ItemImpl.initVersionHistories(ItemImpl.java:736) > at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1150) > at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:758) > at > org.apache.portals.graffito.jcr.persistence.impl.PersistenceManagerImpl.save(PersistenceManagerImpl.java:894) > at > org.apache.portals.graffito.jcr.persistence.impl.PersistenceManagerTest.testClassA(PersistenceManagerTest.java:112) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at junit.framework.TestCase.runTest(TestCase.java:154) > at junit.framework.TestCase.runBare(TestCase.java:127) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22) > at junit.extensions.TestSetup$1.protect(TestSetup.java:19) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.extensions.TestSetup.run(TestSetup.java:23) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) > Caused by: org.apache.jackrabbit.core.state.ItemStateException: failed to write node state: > 86d66b84-96c3-434c-bf0c-5bd7630cb254: Java exception: 'Java heap space: java.lang.OutOfMemoryError'. > at > org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager.store(SimpleDbPersistenceManager.java:592) > at > org.apache.jackrabbit.core.state.AbstractPersistenceManager.store(AbstractPersistenceManager.java:78) > at > org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager.store(SimpleDbPersistenceManager.java:446) > at org.apache.jackrabbit.core.state.SharedItemStateManager.store(SharedItemStateManager.java:514) > at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:344) > at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:306) > at > org.apache.jackrabbit.core.version.VersionManagerImpl.createVersionHistory(VersionManagerImpl.java:266) > ... 25 more > Caused by: SQL Exception: Java exception: 'Java heap space: java.lang.OutOfMemoryError'. > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source) > at > org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager.store(SimpleDbPersistenceManager.java:585) > ... 31 more > org.apache.jackrabbit.core.state.ItemStateException: failed to write node state: > 86d66b84-96c3-434c-bf0c-5bd7630cb254: Java exception: 'Java heap space: java.lang.OutOfMemoryError'. > at > org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager.store(SimpleDbPersistenceManager.java:592) > at > org.apache.jackrabbit.core.state.AbstractPersistenceManager.store(AbstractPersistenceManager.java:78) > at > org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager.store(SimpleDbPersistenceManager.java:446) > at org.apache.jackrabbit.core.state.SharedItemStateManager.store(SharedItemStateManager.java:514) > at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:344) > at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:306) > at > org.apache.jackrabbit.core.version.VersionManagerImpl.createVersionHistory(VersionManagerImpl.java:266) > at > org.apache.jackrabbit.core.version.VersionManagerImpl.createVersionHistory(VersionManagerImpl.java:193) > at org.apache.jackrabbit.core.ItemImpl.initVersionHistories(ItemImpl.java:736) > at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1150) > at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:758) > at > org.apache.portals.graffito.jcr.persistence.impl.PersistenceManagerImpl.save(PersistenceManagerImpl.java:894) > at > org.apache.portals.graffito.jcr.persistence.impl.PersistenceManagerTest.testClassA(PersistenceManagerTest.java:112) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at junit.framework.TestCase.runTest(TestCase.java:154) > at junit.framework.TestCase.runBare(TestCase.java:127) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22) > at junit.extensions.TestSetup$1.protect(TestSetup.java:19) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.extensions.TestSetup.run(TestSetup.java:23) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) > Caused by: SQL Exception: Java exception: 'Java heap space: java.lang.OutOfMemoryError'. > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source) > at > org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager.store(SimpleDbPersistenceManager.java:585) > ... 31 more > java.lang.OutOfMemoryError: Java heap space > [/stacktrace] > > Now my question is: am I doing something stupid with these tests or is it what I imagine it can be > (derby is not able to handle anymore connections). > > thanks in advance, > > ./alex > -- > .w( the_mindstorm )p. > Some more details about this: the jackrabbit version against which the tests are run is: r367360. Between that moment and the current head there where no changes to the SimpleDbPersistenceManager. Another very interesting result is that if I switch the PersistenceManager to BerkleyDb I am not hitting this problem, so I start to think that my assumption about SimpleDbPersistenceManager is true. thanks in advance for any comments, ideas, suggestions, ./alex -- .w( the_mindstorm )p.