Emmanuel Cecchet wrote:
Hi Kathey,
I re-checked derby.log and there was an OOM error.
Hello Emmanuel,
Do you know the maximum allowed size of the heap and the page cache size
used when the OOME occurred? Also, have you overridden the page size, or
are you using Blob/Clob in your tables?
I'm not saying this is caused by a maximum heap size that is too low, it
may still be a Derby bug. Knowing the values of the properties above,
may help us analyze the problem.
FYI, others have seen this problem as well, for instance:
http://www.nabble.com/Derby-DB---How-to-increase-Heap-Size---asadmin-start-database-td18958939.html
Regards,
--
Kristian
What is interesting is that the delete completed anyway.
2009-03-09 05:31:34.731 GMT Thread[DRDAConnThread_3,5,main] (XID =
18628704), (SESSIONID = 21), (DATABASE = nhmnetflowdb), (DRDAID =
NF000001.C4E3-4182998392339954695{22}), Failed Statement is: DELETE
FROM "SA"."NETFLOWDATA"
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.ensureCapacity(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at
org.apache.derby.impl.store.raw.xact.Xact.addPostCommitWork(Unknown
Source)
at
org.apache.derby.impl.store.access.RAMTransaction.addPostCommitWork(Unknown
Source)
at
org.apache.derby.impl.store.access.heap.HeapController.queueDeletePostCommitWork(Unknown
Source)
at
org.apache.derby.impl.store.access.conglomerate.GenericConglomerateController.delete(Unknown
Source)
at
org.apache.derby.impl.sql.execute.RowChangerImpl.deleteRow(Unknown
Source)
at
org.apache.derby.impl.sql.execute.DeleteResultSet.collectAffectedRows(Unknown
Source)
at org.apache.derby.impl.sql.execute.DeleteResultSet.open(Unknown
Source)
at
org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown
Source)
at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLIMM(Unknown
Source)
at
org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
Thanks for the help,
Emmanuel
I am running some tests trying to see the limits of Derby. I am
using Derby 10.4.2.0 on JDK 1.6.0 update 7, Windows Vista.
I created a table with 1 millions rows (no index) and then executed
DELETE * FROM table.
No error on the Derby console.
I got the following exception in the client app (running locally on
the same machine):
java.sql.SQLException: Network protocol exception: actual code
point, 4,692, does not match expected code point, 9,224. The
connection has been terminated.
Usually a protocol exception is indicative of a bug, but it is
unusual for it to come on a delete, which should be a fairly straight
forward operation from a protocol perspective. Was there anything of
use in the derby.log? Do you have reproduction for the issue that
you can post to Jira?
Thanks
Kathey