[
https://issues.apache.org/jira/browse/JCR-1250?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12553959
]
Thomas Mueller commented on JCR-1250:
-------------------------------------
Hello Esteban,
So this test works for you as well. It is the same mechanism as the database
data store uses... So maybe there are other components in the system that use a
lot of memory? Is it possible to find out what uses so much memory? Usually I
use the YourKit Java Profiler, not sure if you know it and if you can use it in
your environment.
Regards,
Thomas
> When adding a large (100MB) binary to the DbDataStore, it fails with an
> insufficient memory exception
> -----------------------------------------------------------------------------------------------------
>
> Key: JCR-1250
> URL: https://issues.apache.org/jira/browse/JCR-1250
> Project: Jackrabbit
> Issue Type: Bug
> Components: jackrabbit-core
> Environment: Windows XP x64 client, SQL Server 2005
> Reporter: Esteban Franqueiro
> Assignee: Thomas Mueller
> Fix For: 1.4
>
> Attachments: BigBinaryTest.java, TestLargeObject.java
>
>
> Attached is a small test case. It fails during save(). I think this is
> related to what I mentioned in
> http://mail-archives.apache.org/mod_mbox/jackrabbit-dev/200711.mbox/[EMAIL
> PROTECTED]
> The full stacktrace is the following:
> javax.jcr.RepositoryException: /: unable to update item.: failed to write
> property state: cafebabe-cafe-babe-cafe-babecafebabe/{}bin: failed to write
> property state: cafebabe-cafe-babe-cafe-babecafebabe/{}bin
> at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1252)
> at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:858)
> at
> org.apache.jackrabbit.core.data.BigBinaryTest.testBigBinary(BigBinaryTest.java:16)
> 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
> org.apache.jackrabbit.test.AbstractJCRTest.run(AbstractJCRTest.java:404)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: org.apache.jackrabbit.core.state.ItemStateException: failed to
> write property state: cafebabe-cafe-babe-cafe-babecafebabe/{}bin
> at
> org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.store(DatabasePersistenceManager.java:487)
> at
> org.apache.jackrabbit.core.persistence.AbstractPersistenceManager.store(AbstractPersistenceManager.java:75)
> at
> org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.store(DatabasePersistenceManager.java:282)
> at
> org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:687)
> at
> org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:856)
> at
> org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:324)
> at
> org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:313)
> at
> org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:300)
> at
> org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:306)
> at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1244)
> ... 21 more
> Caused by: org.apache.jackrabbit.core.data.DataStoreException: Can not read
> identifier a2ada2d96d0b05214288efa03be9005a5bb98c9b: Memoria insuficiente.
> Utilice cursores del servidor para result sets grandes:Java heap space.
> Tamaño de result set:104.857.723. Tamaño memoria total JVM:66.650.112.:
> Memoria insuficiente. Utilice cursores del servidor para result sets
> grandes:Java heap space. Tamaño de result set:104.857.723. Tamaño memoria
> total JVM:66.650.112.
> at
> org.apache.jackrabbit.core.data.db.DbDataStore.convert(DbDataStore.java:438)
> at
> org.apache.jackrabbit.core.data.db.DbDataStore.getInputStream(DbDataStore.java:481)
> at
> org.apache.jackrabbit.core.data.db.DbDataRecord.getStream(DbDataRecord.java:61)
> at
> org.apache.jackrabbit.core.value.BLOBInDataStore.getStream(BLOBInDataStore.java:93)
> at
> org.apache.jackrabbit.core.persistence.util.Serializer.serialize(Serializer.java:198)
> at
> org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.store(DatabasePersistenceManager.java:476)
> ... 30 more
> Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Memoria
> insuficiente. Utilice cursores del servidor para result sets grandes:Java
> heap space. Tamaño de result set:104.857.723. Tamaño memoria total
> JVM:66.650.112.
> at
> com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown
> Source)
> at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source)
> at
> com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown
> Source)
> at
> com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown
> Source)
> at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown
> Source)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown
> Source)
> at
> com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(Unknown
> Source)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmtInternal(ConnectionRecoveryManager.java:362)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmtInternal(ConnectionRecoveryManager.java:292)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmt(ConnectionRecoveryManager.java:257)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmt(ConnectionRecoveryManager.java:237)
> at
> org.apache.jackrabbit.core.data.db.DbDataStore.getInputStream(DbDataStore.java:474)
> ... 34 more
> org.apache.jackrabbit.core.state.ItemStateException: failed to write property
> state: cafebabe-cafe-babe-cafe-babecafebabe/{}bin
> at
> org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.store(DatabasePersistenceManager.java:487)
> at
> org.apache.jackrabbit.core.persistence.AbstractPersistenceManager.store(AbstractPersistenceManager.java:75)
> at
> org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.store(DatabasePersistenceManager.java:282)
> at
> org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:687)
> at
> org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:856)
> at
> org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:324)
> at
> org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:313)
> at
> org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:300)
> at
> org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:306)
> at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1244)
> at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:858)
> at
> org.apache.jackrabbit.core.data.BigBinaryTest.testBigBinary(BigBinaryTest.java:16)
> 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
> org.apache.jackrabbit.test.AbstractJCRTest.run(AbstractJCRTest.java:404)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: org.apache.jackrabbit.core.data.DataStoreException: Can not read
> identifier a2ada2d96d0b05214288efa03be9005a5bb98c9b: Memoria insuficiente.
> Utilice cursores del servidor para result sets grandes:Java heap space.
> Tamaño de result set:104.857.723. Tamaño memoria total JVM:66.650.112.:
> Memoria insuficiente. Utilice cursores del servidor para result sets
> grandes:Java heap space. Tamaño de result set:104.857.723. Tamaño memoria
> total JVM:66.650.112.
> at
> org.apache.jackrabbit.core.data.db.DbDataStore.convert(DbDataStore.java:438)
> at
> org.apache.jackrabbit.core.data.db.DbDataStore.getInputStream(DbDataStore.java:481)
> at
> org.apache.jackrabbit.core.data.db.DbDataRecord.getStream(DbDataRecord.java:61)
> at
> org.apache.jackrabbit.core.value.BLOBInDataStore.getStream(BLOBInDataStore.java:93)
> at
> org.apache.jackrabbit.core.persistence.util.Serializer.serialize(Serializer.java:198)
> at
> org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.store(DatabasePersistenceManager.java:476)
> ... 30 more
> Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Memoria
> insuficiente. Utilice cursores del servidor para result sets grandes:Java
> heap space. Tamaño de result set:104.857.723. Tamaño memoria total
> JVM:66.650.112.
> at
> com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown
> Source)
> at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source)
> at
> com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown
> Source)
> at
> com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown
> Source)
> at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown
> Source)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown
> Source)
> at
> com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(Unknown
> Source)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmtInternal(ConnectionRecoveryManager.java:362)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmtInternal(ConnectionRecoveryManager.java:292)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmt(ConnectionRecoveryManager.java:257)
> at
> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryManager.executeStmt(ConnectionRecoveryManager.java:237)
> at
> org.apache.jackrabbit.core.data.db.DbDataStore.getInputStream(DbDataStore.java:474)
> ... 34 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.