You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ps...@apache.org on 2014/05/03 02:12:48 UTC
svn commit: r1592132 - in /commons/proper/dbcp/trunk/src: changes/
main/java/org/apache/commons/dbcp2/managed/
test/java/org/apache/commons/dbcp2/managed/
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;
+ }
}