db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-557) Client driver gets OutOfMemoryError when re-executing statement without closing ResultSet
Date Fri, 16 Sep 2005 13:54:56 GMT
    [ http://issues.apache.org/jira/browse/DERBY-557?page=comments#action_12329543 ] 

Kathey Marsden commented on DERBY-557:
--------------------------------------

Thanks Knut for the patch.
It looks good and I committed it to the trunk.  

Date: Fri Sep 16 06:52:14 2005
New Revision: 289539

URL: http://svn.apache.org/viewcvs?rev=289539&view=rev


A couple of questions though.

1) What do you think about adding a test.?  The heap can be set  using jvmflags  in an app_properties
 file as we do in tests/largedata

2) Do you want this to go into the 10.1.2 release?  If so, you can just merge and test in
your workspace and then post the svn merge command here and I'll port it to the branch. I
think it would be a great to address some of these memory issues for 10.1.2.




> Client driver gets OutOfMemoryError when re-executing statement without closing ResultSet
> -----------------------------------------------------------------------------------------
>
>          Key: DERBY-557
>          URL: http://issues.apache.org/jira/browse/DERBY-557
>      Project: Derby
>         Type: Bug
>   Components: Network Client
>     Versions: 10.1.1.0, 10.1.2.0, 10.2.0.0
>     Reporter: Knut Anders Hatlen
>     Assignee: Knut Anders Hatlen
>     Priority: Minor
>      Fix For: 10.1.2.0, 10.2.0.0
>  Attachments: DERBY-557.diff, DERBY-557.stat, derbyall_report.txt
>
> When re-executing a statement without closing the old ResultSet, some of the old ResultSet's
resources are not released, and the network client will eventually get an OutOfMemoryError.
> Example:
> 	Connection c = DriverManager.getConnection("jdbc:derby://localhost/mydb");
> 	PreparedStatement ps = c.prepareStatement("select * from sys.systables");
> 	while (true) {
> 		ResultSet rs = ps.executeQuery();
> 	}
> This code will run for some time and then throw an OutOfMemoryError. Same thing happens
with Statement instead of PreparedStatement. If rs.close() is added in the loop, the code
works. Explicitly closing the ResultSet should not be necessary according to this quote from
the JDBC 3.0 spec:
>   For Select statements, the statement is complete when the associated result set is
closed. The result set is closed as soon as one of the following occurs:
>      - all of the rows have been retrieved
>      - the associated Statement object is re-executed
>      - another Statement object is executed on the same connection

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message