[ 
https://issues.apache.org/jira/browse/DBCP-355?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Phil Steitz closed DBCP-355.
----------------------------


> DataSourceXAConnectionFactory does not store the XAConnection
> -------------------------------------------------------------
>
>                 Key: DBCP-355
>                 URL: https://issues.apache.org/jira/browse/DBCP-355
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 1.3, 1.4
>         Environment: MysqlXADataSource passed to BasicManagedDataSource
>            Reporter: Clement Pang
>             Fix For: 1.5.1, 2.0
>
>         Attachments: DBCP-355.diff
>
>
> We have been diagnosing a leak with DBCP and XA mySQL and discovered that the 
> mySQL driver expects close() to be invoked on the XAConnection obtained from 
> xaDataSource.getXAConnection() instead of the java.sql.Connection returned by 
> xaConnection.getConnection();
> The following code snippet in DataSourceXAConnectionFactory illustrates how 
> the XAConnection is lost:
>     public Connection createConnection() throws SQLException {
>         // create a new XAConection
>         XAConnection xaConnection;
>         if (username == null) {
>             xaConnection = xaDataSource.getXAConnection();
>         } else {
>             xaConnection = xaDataSource.getXAConnection(username, password);
>         }
>         // get the real connection and XAResource from the connection
>         Connection connection = xaConnection.getConnection();
>         XAResource xaResource = xaConnection.getXAResource();
>         // register the xa resource for the connection
>         transactionRegistry.registerConnection(connection, xaResource);
>         return connection;
>     }
> In the code snippet above, the XAConnection is basically discarded after 
> using it to obtain the java.sql.Connection and XAResource. It would be ideal 
> if it actually associates the XAConnection in the transactionRegistry as well 
> so that when PooledManagedConnection handles reallyClose(), it can also 
> invoke close() on the XAConnection by interrogating the TransactionRegistry 
> for the actual XAConnection to close.
> This may be something that's mySQL specific.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to