[
https://issues.apache.org/jira/browse/DBCP-564?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary D. Gregory resolved DBCP-564.
----------------------------------
Fix Version/s: 2.8.0
Resolution: Fixed
Please verify and close.
> BasicManagedDataSource leaks connections opened after transaction is
> rollback-only
> ----------------------------------------------------------------------------------
>
> Key: DBCP-564
> URL: https://issues.apache.org/jira/browse/DBCP-564
> Project: Commons DBCP
> Issue Type: Bug
> Affects Versions: 2.7.0
> Reporter: Florent Guillaume
> Priority: Minor
> Fix For: 2.8.0
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> In the following situation a connection will be leaked and never returned to
> the pool:
> * a {{BasicManagedDataSource}} is instantiated for a non-XA driver class
> name (but with a TransactionManager and a TransactionSynchronizationRegistry),
> * a transaction is started then switched to rollback-only,
> * a connection is acquired from the datasource,
> * the connection is closed,
> * the transaction is rolled back.
> The leak happens because, even though there is code in
> {{TransactionContext.addTransactionContextListener}} to properly use the
> {{transactionSynchronizationRegistry}} to register the suitable
> {{Synchronization}} to do cleanup in {{afterCompletion}}, the
> {{transactionSynchronizationRegistry}} is actually {{null}} because of the
> way the {{LocalXAConnectionFactory}} was created in
> {{BasicManagedDataSource.createConnectionFactory}}.
> PR: https://github.com/apache/commons-dbcp/pull/39
--
This message was sent by Atlassian Jira
(v8.3.4#803005)