Author: psteitz
Date: Sat May 3 00:12:47 2014
New Revision: 1592132
URL: http://svn.apache.org/r1592132
Log:
Fixed connection leak when managed connections are closed during transactions.
JIRA: DBCP-417.
Modified:
commons/proper/dbcp/trunk/src/changes/changes.xml
commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java
commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSource.java
commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSourceInTx.java
Modified: commons/proper/dbcp/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/changes/changes.xml?rev=1592132&r1=1592131&r2=1592132&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/changes/changes.xml (original)
+++ commons/proper/dbcp/trunk/src/changes/changes.xml Sat May 3 00:12:47 2014
@@ -73,6 +73,9 @@ The <action> type attribute can be add,u
Added check in PoolingDataSource constructor to ensure that the
connection factory
and pool are properly linked.
</action>
+ <action issue="DBCP-417" dev="psteitz" type="fix">
+ Fixed connection leak when managed connections are closed during
transactions.
+ </action>
</release>
<release version="2.0" date="3 March 2014" description=
"This release includes new features as well as bug fixes and enhancements.
Modified:
commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java
URL:
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java?rev=1592132&r1=1592131&r2=1592132&view=diff
==============================================================================
---
commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java
(original)
+++
commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java
Sat May 3 00:12:47 2014
@@ -196,7 +196,7 @@ public class ManagedConnection<C extends
setDelegate(null);
if (!delegate.isClosed()) {
- super.close();
+ delegate.close();
}
} catch (SQLException ignored) {
// Not a whole lot we can do here as connection is closed
Modified:
commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSource.java
URL:
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSource.java?rev=1592132&r1=1592131&r2=1592132&view=diff
==============================================================================
---
commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSource.java
(original)
+++
commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSource.java
Sat May 3 00:12:47 2014
@@ -114,7 +114,7 @@ public class TestManagedDataSource exten
}
/**
- * Verify that conection sharing is working (or not working) as expected.
+ * Verify that connection sharing is working (or not working) as expected.
*/
public void testSharedConnection() throws Exception {
DelegatingConnection<?> connectionA = (DelegatingConnection<?>)
newConnection();
@@ -128,7 +128,18 @@ public class TestManagedDataSource exten
connectionA.close();
connectionB.close();
}
+
+ public void testConnectionReturnOnCommit() throws Exception {
+ transactionManager.begin();
+ DelegatingConnection<?> connectionA = (DelegatingConnection<?>)
newConnection();
+ connectionA.close();
+ transactionManager.commit();
+ assertEquals(1, pool.getBorrowedCount());
+ assertEquals(1, pool.getReturnedCount());
+ assertEquals(0, pool.getNumActive());
+ }
+
public void testManagedConnectionEqualsSameDelegateNoUnderlyingAccess()
throws Exception {
// Get a maximal set of connections from the pool
Connection[] c = new Connection[getMaxTotal()];
Modified:
commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSourceInTx.java
URL:
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSourceInTx.java?rev=1592132&r1=1592131&r2=1592132&view=diff
==============================================================================
---
commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSourceInTx.java
(original)
+++
commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/managed/TestManagedDataSourceInTx.java
Sat May 3 00:12:47 2014
@@ -344,5 +344,10 @@ public class TestManagedDataSourceInTx e
resultSet.getStatement().getConnection().close();
}
+
+ public void testConnectionReturnOnCommit() throws Exception {
+ // override with no-op test
+ return;
+ }
}