Bugs item #796585, was opened at 2003-08-28 02:42
Message generated for change (Comment added) made by starksm
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=796585&group_id=22866
Category: JBossServer
Group: v4.0
>Status: Closed
Resolution: None
Priority: 5
Submitted By: Craig Munday (cmunday)
Assigned to: Nobody/Anonymous (nobody)
Summary: PreparedStatement leak in HiLoKeyGenerator.java
Initial Comment:
Hi,
There is a Statement that does not get closed and is
left to be finialized within the following method (included
below) from the HiLoKeyGenerator class.
The statement create by:
stmt = con.prepareStatement(nextKeyQuery);
leaks because the variable "stmt" is re-assigned with:
stmt = con.prepareStatement(updateStmt);
This second statement is closed within the finally clause
but the first one is never closed and should be
Cheers,
Craig.
public synchronized Object generateKey()
{
if(lo < hi)
return new Integer(lo++);
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
Transaction currentTx = null;
try
{
currentTx = tm.suspend();
tm.begin();
con = datasource.getConnection();
int rowsUpdated;
do
{
if(isDebugEnabled) log.debug("Executing SQL: "
+ nextKeyQuery);
stmt = con.prepareStatement(nextKeyQuery);
rs = stmt.executeQuery();
if(!rs.next())
throw new Exception("Couldn't read next key:
ResultSet is empty.");
lo = rs.getInt(1);
hi = lo + blockSize;
if(isDebugEnabled)
log.debug("Executing SQL: " + updateStmt
+ " [p1=" + hi + ",p2=" + lo + "]");
stmt = con.prepareStatement(updateStmt);
stmt.setInt(1, hi);
stmt.setInt(2, lo);
rowsUpdated = stmt.executeUpdate();
}
while(rowsUpdated == 0);
tm.commit();
}
catch(Exception e)
{
log.error("Error fetching next key:", e);
try
{
tm.rollback();
}
catch(SystemException se)
{
log.error("Couldn't rollback transaction: ", se);
}
}
finally
{
JDBCUtil.safeClose(rs);
JDBCUtil.safeClose(stmt);
JDBCUtil.safeClose(con);
if(currentTx != null)
{
try
{
tm.resume(currentTx);
}
catch(InvalidTransactionException ite)
{
log.error("Invalid transaction: ", ite);
}
catch(SystemException se)
{
log.error("Unexpected error: ", se);
}
}
}
return new Integer(lo++);
}
----------------------------------------------------------------------
Comment By: Scott M Stark (starksm)
Date: 2004-12-29 12:51
Message:
Logged In: YES
user_id=175228
All issues have been moved to http://jira.jboss.com. Existing
issues have been moved. New issues will be closed with this
canned reponse.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=796585&group_id=22866
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
JBoss-Development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-development