[ https://issues.apache.org/jira/browse/DERBY-5344?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kathey Marsden updated DERBY-5344: ---------------------------------- Description: On converting LobLimits.java to LobLimitsTest I noticed this disabled test: There is disabled test in largedata.LobLimitsTest.java which is a carryover from largedata.LobLimits.java // Disabled for now, this will materialize, will open // jira for it. // updateClob2("ClobTest #8.1",conn,selectClob,BIG_LOB_SZ,0,0,10,1,CHARDATAFILE); Enabling the test for embedded I noticed it still can get an out of memory. (I actually think I did run it once successfully) but on my second full run of the suite I saw it fail. java.sql.SQLException: Java exception: ': java.lang.OutOfMemoryError'. at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:98) at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:142) at org.apache.derby.impl.jdbc.Util.javaException(Util.java:299) at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:412) at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:348) at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2290) at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:82) at org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(EmbedResultSet.java:4409) at org.apache.derby.impl.jdbc.EmbedResultSet.updateRow(EmbedResultSet.java:3788) at org.apache.derbyTesting.functionTests.tests.largedata.LobLimitsTest.updateClob2(LobLimitsTest.java:1219) at org.apache.derbyTesting.functionTests.tests.largedata.LobLimitsTest.testClob2(LobLimitsTest.java:304) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:611) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:112) 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.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57) 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 junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at junit.textui.TestRunner.doRun(TestRunner.java:116) at junit.textui.TestRunner.start(TestRunner.java:172) at junit.textui.TestRunner.main(TestRunner.java:138) Caused by: java.sql.SQLException: Java exception: ': java.lang.OutOfMemoryError'. at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45) at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:122) at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:71) ... 37 more Caused by: java.lang.OutOfMemoryError at org.apache.derby.iapi.services.io.DynamicByteArrayOutputStream.expandBuffer(DynamicByteArrayOutputStream.java:244) at org.apache.derby.iapi.services.io.DynamicByteArrayOutputStream.write(DynamicByteArrayOutputStream.java:78) at java.io.DataOutputStream.write(DataOutputStream.java) at org.apache.derby.iapi.types.SQLChar.writeUTF(SQLChar.java:922) at org.apache.derby.iapi.types.SQLChar.writeClobUTF(SQLChar.java:960) at org.apache.derby.iapi.types.SQLClob.writeExternal(SQLClob.java:647) at org.apache.derby.impl.store.raw.data.StoredPage.logColumn(StoredPage.java:6325) at org.apache.derby.impl.store.raw.data.StoredPage.logRow(StoredPage.java:4006) at org.apache.derby.impl.store.raw.data.UpdateOperation.writeOptionalDataToBuffer(UpdateOperation.java:255) at org.apache.derby.impl.store.raw.data.UpdateOperation.<init>(UpdateOperation.java:106) at org.apache.derby.impl.store.raw.data.LoggableActions.actionUpdate(LoggableActions.java:80) at org.apache.derby.impl.store.raw.data.StoredPage.doUpdateAtSlot(StoredPage.java:8602) at org.apache.derby.impl.store.raw.data.BasePage.updateAtSlot(BasePage.java:1064) at org.apache.derby.impl.store.access.conglomerate.GenericConglomerateController.replace(GenericConglomerateController.java:486) at org.apache.derby.impl.sql.execute.RowChangerImpl.updateRow(RowChangerImpl.java:523) at org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java:569) at org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:264) at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436) at org.apache.derby.impl.sql.GenericPreparedStatement.executeSubStatement(GenericPreparedStatement.java:306) at org.apache.derby.impl.jdbc.EmbedResultSet.updateRow(EmbedResultSet.java:3772) ... 29 more The test passes on client and in LobLimitsLiteTest in embedded. To reproduce run largedata.LobLimitsTest, commenting out the below condition: if (!(usingEmbedded() && BIGGEST_LOB_SZ == _2GB)) { updateClob2("ClobTest #8.1",selectClob,BIG_LOB_SZ,0,0,10,CHARDATAFILE); } or likely you can get a smaller standalone test case by adjusting the sizes and adjusting down the heap with -Xmx was: There is disabled test in largedata.LobLimitsTest.java which is a carryover from largedata.LobLimits.java // Disabled for now, this will materialize, will open // jira for it. // updateClob2("ClobTest #8.1",conn,selectClob,BIG_LOB_SZ,0,0,10,1,CHARDATAFILE); It is not clear to me what Jira this was or if it has since been fixed. I will renable the test and do a run. I am logging this separately from DERBY-1903 so the change is clear in case anyone wants to do performance comparison of the old and new test. Issue Type: Bug (was: Improvement) Summary: updateClob2 test in LobLimitsTest gets OutOfMemoryError on updateRow with embedded (was: Enable updateClob2 test in LobLimitsTest (was LobLimits.java)) Changed the title of this test to reflect the actual bug with updateClob2. > updateClob2 test in LobLimitsTest gets OutOfMemoryError on updateRow with > embedded > ---------------------------------------------------------------------------------- > > Key: DERBY-5344 > URL: https://issues.apache.org/jira/browse/DERBY-5344 > Project: Derby > Issue Type: Bug > Components: Test > Affects Versions: 10.9.0.0 > Reporter: Kathey Marsden > > On converting LobLimits.java to LobLimitsTest I noticed this disabled test: > There is disabled test in largedata.LobLimitsTest.java which is a carryover > from largedata.LobLimits.java > // Disabled for now, this will materialize, will open > // jira for it. > // updateClob2("ClobTest > #8.1",conn,selectClob,BIG_LOB_SZ,0,0,10,1,CHARDATAFILE); > Enabling the test for embedded I noticed it still can get an out of memory. > (I actually think I did run it once successfully) > but on my second full run of the suite I saw it fail. > > java.sql.SQLException: Java exception: ': java.lang.OutOfMemoryError'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:98) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:142) > at org.apache.derby.impl.jdbc.Util.javaException(Util.java:299) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:412) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:348) > at > org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2290) > at > org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:82) > at > org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(EmbedResultSet.java:4409) > at > org.apache.derby.impl.jdbc.EmbedResultSet.updateRow(EmbedResultSet.java:3788) > at > org.apache.derbyTesting.functionTests.tests.largedata.LobLimitsTest.updateClob2(LobLimitsTest.java:1219) > at > org.apache.derbyTesting.functionTests.tests.largedata.LobLimitsTest.testClob2(LobLimitsTest.java:304) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) > at java.lang.reflect.Method.invoke(Method.java:611) > at junit.framework.TestCase.runTest(TestCase.java:154) > at junit.framework.TestCase.runBare(TestCase.java:127) > at > org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:112) > 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.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57) > 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 junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at junit.textui.TestRunner.doRun(TestRunner.java:116) > at junit.textui.TestRunner.start(TestRunner.java:172) > at junit.textui.TestRunner.main(TestRunner.java:138) > Caused by: java.sql.SQLException: Java exception: ': > java.lang.OutOfMemoryError'. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:122) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:71) > ... 37 more > Caused by: java.lang.OutOfMemoryError > at > org.apache.derby.iapi.services.io.DynamicByteArrayOutputStream.expandBuffer(DynamicByteArrayOutputStream.java:244) > at > org.apache.derby.iapi.services.io.DynamicByteArrayOutputStream.write(DynamicByteArrayOutputStream.java:78) > at java.io.DataOutputStream.write(DataOutputStream.java) > at org.apache.derby.iapi.types.SQLChar.writeUTF(SQLChar.java:922) > at org.apache.derby.iapi.types.SQLChar.writeClobUTF(SQLChar.java:960) > at org.apache.derby.iapi.types.SQLClob.writeExternal(SQLClob.java:647) > at > org.apache.derby.impl.store.raw.data.StoredPage.logColumn(StoredPage.java:6325) > at > org.apache.derby.impl.store.raw.data.StoredPage.logRow(StoredPage.java:4006) > at > org.apache.derby.impl.store.raw.data.UpdateOperation.writeOptionalDataToBuffer(UpdateOperation.java:255) > at > org.apache.derby.impl.store.raw.data.UpdateOperation.<init>(UpdateOperation.java:106) > at > org.apache.derby.impl.store.raw.data.LoggableActions.actionUpdate(LoggableActions.java:80) > at > org.apache.derby.impl.store.raw.data.StoredPage.doUpdateAtSlot(StoredPage.java:8602) > at > org.apache.derby.impl.store.raw.data.BasePage.updateAtSlot(BasePage.java:1064) > at > org.apache.derby.impl.store.access.conglomerate.GenericConglomerateController.replace(GenericConglomerateController.java:486) > at > org.apache.derby.impl.sql.execute.RowChangerImpl.updateRow(RowChangerImpl.java:523) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java:569) > at > org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:264) > at > org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436) > at > org.apache.derby.impl.sql.GenericPreparedStatement.executeSubStatement(GenericPreparedStatement.java:306) > at > org.apache.derby.impl.jdbc.EmbedResultSet.updateRow(EmbedResultSet.java:3772) > ... 29 more > The test passes on client and in LobLimitsLiteTest in embedded. To reproduce > run largedata.LobLimitsTest, commenting out the below condition: > if (!(usingEmbedded() && BIGGEST_LOB_SZ == _2GB)) { > updateClob2("ClobTest > #8.1",selectClob,BIG_LOB_SZ,0,0,10,CHARDATAFILE); > } > or likely you can get a smaller standalone test case by adjusting the sizes > and adjusting down the heap with -Xmx -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira