[ 
https://issues.apache.org/jira/browse/DERBY-3698?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12609188#action_12609188
 ] 

Kristian Waagan commented on DERBY-3698:
----------------------------------------

I see the following statement in an earlier comment:
"So if one use jdbc connect/disconnect for each operation, after several 
minutes, derby easily rejects a new connection, because it is busy."

Although one can argue this approach should work, it is very inefficient to 
create a new connection for each SQL query.
As mentioned before, using prepared statements is also crucial to get good 
performance.

It would be interesting to know how you obtain the connections. Did you use 
DriverManager or a DataSource implementation?
Unless your program ends up keeping a lot of connections open, Derby should not 
run out of memory. If it does, it indicates a bug.

> Bulk SQL INSERT, SELECT, UPDATE operations creates OutOfMemoryError after 
> first Cleanup action on serverside
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3698
>                 URL: https://issues.apache.org/jira/browse/DERBY-3698
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Server
>    Affects Versions: 10.4.1.3
>         Environment: Windows XP, JDK 1.4
>            Reporter: Semih ARAL
>         Attachments: ac004b0019x011ax5fe9x6337x0000760c8b634386.class, 
> ac38c30028x011ax550cx96f4x0000760c8b6335b.class, 
> ac80220011x011ax5218x3922x0000760c8b635ec2.class, 
> ac80220011x011ax550cx96f4x0000760c8b63674e.class, 
> ac80220011x011ax5a87xb7a0x0000760c8b6345b3.class, 
> ac80220011x011ax5c5ax34c5x0000760c8b636b66.class, 
> ac80220011x011ax620ax9a0bx0000760c8b63574a.class, derby01.log, derby02.log, 
> derby03.log, derby04.log, log.txt
>
>
> In the migration of an DB, 
> By using JDBC (connection is open one time in the begining)
> after many INSERT, SELECT,UPDATE statement executions (more than 3500)
> I got the following Exception on the client side:
> SELECT PK_SEQ, NAME, URL FROM EUPROJ.FIRM WHERE NAME ='INSTITUTE OF EDUCATION 
> University OF LONDON'
> com.javaDevHome.ladyBeetle.exception.MicroJDBCException: 
> java.sql.SQLException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, 
> SQLERRMC: java.lang.OutOfMemoryErrorXJ001.U
>       at 
> com.javaDevHome.ladyBeetle.MicroJDBCConnection.executeQuery(MicroJDBCConnection.java:251)
>       at 
> com.javaDevHome.ladyBeetle.MicroJDBCDBase.selectRowSilent(MicroJDBCDBase.java:133)
>       at euProj.transfer.Transfer.procFirmNew(Transfer.java:259)
>       at euProj.transfer.Transfer.procshortListNew(Transfer.java:200)
>       at euProj.transfer.Transfer.readConsortiums(Transfer.java:524)
>       at euProj.transfer.Transfer.procContract(Transfer.java:107)
>       at euProj.transfer.Transfer.readLine(Transfer.java:554)
>       at euProj.transfer.Transfer.main(Transfer.java:594)
> Caused by: java.sql.SQLException: DERBY SQL error: SQLCODE: -1, SQLSTATE: 
> XJ001, SQLERRMC: java.lang.OutOfMemoryErrorXJ001.U
>       at 
> org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown 
> Source)
>       at org.apache.derby.client.am.SqlException.getSQLException(Unknown 
> Source)
>       at org.apache.derby.client.am.Statement.executeQuery(Unknown Source)
>       at 
> com.javaDevHome.ladyBeetle.MicroJDBCConnection.executeQuery(MicroJDBCConnection.java:247)
>       ... 7 more
> Caused by: org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: 
> -1, SQLSTATE: XJ001, SQLERRMC: java.lang.OutOfMemoryErrorXJ001.U
>       at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source)
>       at 
> org.apache.derby.client.net.NetStatementReply.parsePrepareError(Unknown 
> Source)
>       at 
> org.apache.derby.client.net.NetStatementReply.parsePRPSQLSTTreply(Unknown 
> Source)
>       at 
> org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown
>  Source)
>       at 
> org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown 
> Source)
>       at 
> org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unknown 
> Source)
>       at 
> org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown Source)
>       at org.apache.derby.client.am.Statement.flowExecute(Unknown Source)
>       at org.apache.derby.client.am.Statement.executeQueryX(Unknown Source)
>       ... 9 more
> in derby.log on the server side :
> 2008-05-29 20:33:04.578 GMT Thread[DRDAConnThread_5,5,main] (XID = 171959), 
> (SESSIONID = 4), (DATABASE = euProj03), (DRDAID = 
> NF000001.H1CF-4339779978832484505{5}), Begin compiling prepared statement: 
> SELECT PK_SEQ, NAME, URL FROM EUPROJ.FIRM WHERE NAME ='INSTITUTE OF EDUCATION 
> University OF LONDON' :End prepared statement
> 2008-05-29 20:33:04.609 GMT Thread[DRDAConnThread_5,5,main] (XID = 171959), 
> (SESSIONID = 4), (DATABASE = euProj03), (DRDAID = 
> NF000001.H1CF-4339779978832484505{5}), End compiling prepared statement: 
> SELECT PK_SEQ, NAME, URL FROM EUPROJ.FIRM WHERE NAME ='INSTITUTE OF EDUCATION 
> University OF LONDON' :End prepared statement
> 2008-05-29 20:33:07.499 GMT Thread[DRDAConnThread_5,5,main] (XID = 171959), 
> (SESSIONID = 4), (DATABASE = euProj03), (DRDAID = 
> NF000001.H1CF-4339779978832484505{5}), Cleanup action starting
> 2008-05-29 20:33:07.499 GMT Thread[DRDAConnThread_5,5,main] (XID = 171959), 
> (SESSIONID = 4), (DATABASE = euProj03), (DRDAID = 
> NF000001.H1CF-4339779978832484505{5}), Failed Statement is: SELECT PK_SEQ, 
> NAME, URL FROM EUPROJ.FIRM WHERE NAME ='INSTITUTE OF EDUCATION University OF 
> LONDON'
> java.lang.OutOfMemoryError
> Cleanup action completed
> 2008-05-29 20:33:37.359 GMT Thread[DRDAConnThread_6,5,main] (XID = 169430), 
> (SESSIONID = 6), (DATABASE = euProj03), (DRDAID = 
> NF000001.H1D1-4255618960795994455{7}), Rolling back
> 2008-05-29 20:33:37.359 GMT Thread[DRDAConnThread_6,5,main] (XID = 169430), 
> (SESSIONID = 6), (DATABASE = euProj03), (DRDAID = 
> NF000001.H1D1-4255618960795994455{7}), Rolling back
> 2008-05-29 20:33:37.359 GMT Thread[DRDAConnThread_4,5,main] (XID = 143043), 
> (SESSIONID = 5), (DATABASE = euProj03), (DRDAID = 
> NF000001.H1D0-4255900435772705908{6}), Rolling back
> 2008-05-29 20:33:37.359 GMT Thread[DRDAConnThread_4,5,main] (XID = 143043), 
> (SESSIONID = 5), (DATABASE = euProj03), (DRDAID = 
> NF000001.H1D0-4255900435772705908{6}), Rolling back
> in the derby.log there is no other Cleanup action, this is the first and the 
> only one.
> I have started the server by default heap memory options:
> java -Dderby.system.home=C:\derby -jar %DERBY_HOME%\lib\derbyrun.jar server 
> start

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to