[
https://issues.apache.org/jira/browse/DBCP-355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13634490#comment-13634490
]
Florent Guillaume edited comment on DBCP-355 at 2/2/14 10:16 PM:
-----------------------------------------------------------------
Hi,
I've been hit by this problem as well. I'm attaching a patch on top of 1.4,
including a unit test for it.
(Nuxeo reference: [NXP-11433|https://jira.nuxeo.com/browse/NXP-11433].)
Regards
was (Author: fguillaume):
Hi,
I've been hit by this problem as well. I'm attaching a patch on top of 1.4,
including a unit test for it.
Regards
> 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.3.1, 1.4.1
>
> 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.1.5#6160)