Hi,

to demonstrate the problem, i've written some code which approximates the code i'm using. (attached)

I'm running Java 1.4.2 with the JVM parameter -Xmx64m.

If you run the test() method, the memory used by the JVM rises to above 150mb until the following exception happens:

java.lang.OutOfMemoryError
ERROR 40XT0: An internal error was identified by RawStore module.
at org.apache.derby.iapi.error.StandardException.newException(StandardException.java)
at org.apache.derby.impl.store.raw.xact.Xact.setActiveState(Xact.java)
at org.apache.derby.impl.store.raw.xact.Xact.openContainer(Xact.java)
at org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(OpenConglomerate.java)
at org.apache.derby.impl.store.access.heap.Heap.open(Heap.java)
at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java)
at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndex(DataDictionaryImpl.java)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.locateSchemaRow(DataDictionaryImpl.java)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(DataDictionaryImpl.java)
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(QueryTreeNode.java)
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(QueryTreeNode.java)
at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(FromBaseTable.java)
at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(FromBaseTable.java)
at org.apache.derby.impl.sql.compile.FromList.bindTables(FromList.java)
at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(SelectNode.java)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(DMLStatementNode.java)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(DMLStatementNode.java)
at org.apache.derby.impl.sql.compile.ReadCursorNode.bind(ReadCursorNode.java)
at org.apache.derby.impl.sql.compile.CursorNode.bind(CursorNode.java)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java)
at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java)
at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(EmbedStatement.java)
at AutoCommitTest.query(AutoCommitTest.java:223)
at AutoCommitTest.test(AutoCommitTest.java:72)
at AutoCommitTest.<init>(AutoCommitTest.java:40)
at AutoCommitTest.main(AutoCommitTest.java:235)
java.lang.NullPointerException
at AutoCommitTest.test(AutoCommitTest.java:75)
at AutoCommitTest.<init>(AutoCommitTest.java:40)
at AutoCommitTest.main(AutoCommitTest.java:235)



The derby.log file looked like this:

2005-05-13 10:21:36.593 GMT:
Booting Derby version IBM Corp. - Apache Derby - 10.0.2.0 - (46005): instance c013800d-0103-d592-c983-000000197520
on database directory D:\eclipse\workspace\DerbyAutoCommitTest\testdb

Database Class Loader started - derby.database.classpath=''
2005-05-13 10:36:18.890 GMT Thread[main,5,main] (XID = 101522), (SESSIONID = 0), (DATABASE = testdb), (DRDAID = null), Cleanup action starting
2005-05-13 10:36:18.890 GMT Thread[main,5,main] (XID = 101522), (SESSIONID = 0), (DATABASE = testdb), (DRDAID = null), Failed Statement is: INSERT INTO test(id, s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,i1,i2,i3,i4,i5,i6) VALUES(13465,'JYC&''>2_vE\wW9yBhpN=R<8$<3;e\xz.X9&-ozwCW&=kF"8dfn','Id7j}\Mu''Ho8W)q<SE7vNMgGU|S{^-/[EMAIL PROTECTED];k8kZ~+cdOK;^zu','CyrL${s+}w(dyfw&#<q9>ts\vU|z2u B7oB[wx[U6k%O*dq51H','5[%x.fzodgnx!|i|X7kHFP3#9,[EMAIL PROTECTED])ZwuFyC^rZe}8ZH','tz6Vj%2\opWt_Bwt6gyR#~.U*0FYQ70erT?yM.~W3?Ce;-jds<','D"lP(,oZK$Y"E[OKY"8=,1%br."pwon\6]=e0h.{DL[m`yrE]U','uWewV{=YzH;YC[0&Ie;fJ<L)`d_pl2t>NPO"gb[M)ID-pDiaFP','[EMAIL PROTECTED] Hh%*Y{5k|n==m_P*KRD3~^%C1;9II','8~XK''kZZyJ<[EMAIL PROTECTED]@9VVF`t}z<<zLeEg','OP$xd(*S06mH\F_f|&#v{_5e%8=HJhJ`ee"df*V=^a~j&$?;ZY','J|jW9h^;QuWU$Zg05G@:X]\]"wnG:m(s|%<''lAEW#?XbA^,7oV','fl)P#I_%G/;NceIv]AeWY %B$?5XFijw),[EMAIL PROTECTED]','$(xHn"^LA-D\2^pN7}+coue8ySFlHnF7T;<!oxS;3{C,(M--iJ','O#dZ,=_s5uY6jMo\N''z]D-&1w!dkrok!exZ5Oe]^-xXdTbLBsv','[EMAIL PROTECTED]/=RUQF]#cpU}Qo Ou]gM)Ir:(tx[`.?b<vY_/ct9F+',1492672792,-43909196,808521047,235300249,-1291212720,-867862481)
java.lang.OutOfMemoryError
Cleanup action completed


------------------------------------------------------

If this is run without the autocommit being turned off, there is no problem.

Interestingly, test2() which has the id query removed, causes no problem.


Cheers,

Chris



It looks like a bug, but a reproducible case would be needed to start
trying to fix it. Is there a chance you could post code that shows this
behaviour?

There may also be an earlier error the is the real problem, try checking
in your derby.log file.

Thanks,
Dan.







Attachment: AutoCommitTest.java
Description: java/

Reply via email to