Statement leak in HandleBeforeCommit1PCRunner
---------------------------------------------
Key: JBMESSAGING-1227
URL:
http://jira.jboss.com/jira/browse/JBMESSAGING-1227
Project: JBoss Messaging
Issue Type: Bug
Affects Versions: 1.4.0.SP3
Reporter: Kevin Conner
Assigned To: Tim Fox
Priority: Blocker
From JBESB-1450
"This leak appears to be coming from JBoss Messaging, specifically
JDBCPersistenceManager$1HandleBeforeCommit1PCRunner.doTransaction(JDBCPersistenceManager.java:1587)
This line creates a prepared statement within a loop but only the last statement created
will be released. Other examples of this construct, within this file, use a simple guard
to prevent subsequent allocations. This appears to be the only occurrence which does
not."
"The following change fixes the leak.
Index: src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java
===================================================================
--- src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java (revision 3648)
+++ src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java (working copy)
@@ -1584,8 +1584,11 @@
ChannelRefPair pair = (ChannelRefPair) i.next();
MessageReference ref = pair.ref;
- psReference = conn
+ if (psReference == null)
+ {
+ psReference = conn
.prepareStatement(getSQLStatement("INSERT_MESSAGE_REF"));
+ }
// Now store the reference
addReference(pair.channelID, ref, psReference, false);
"
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira