[
https://issues.apache.org/jira/browse/GERONIMO-5870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Florent Guillaume updated GERONIMO-5870:
----------------------------------------
Attachment: GERONIMO-5870.3.1.diff
Patch for 3.1
> Remove connection from pool if it fails to enlist
> -------------------------------------------------
>
> Key: GERONIMO-5870
> URL: https://issues.apache.org/jira/browse/GERONIMO-5870
> Project: Geronimo
> Issue Type: Bug
> Security Level: public(Regular issues)
> Components: connector
> Affects Versions: 2.1.3
> Reporter: Florent Guillaume
> Priority: Minor
> Attachments: GERONIMO-5870.2.1.4.diff, GERONIMO-5870.3.1.diff
>
>
> When a connection fails to enlist, it should be removed from its pool.
> Consider the following:
> ConnectionFactory.getConnection
> -> GenericConnectionManager.allocateConnection
> -> TransactionEnlistingInterceptor.getConnection
> -> TransactionImpl.enlistResource
> -> xaRes.start
> In my XAResource for internal reasons there's a failure to do the start (no
> network resources available), and it throws XAException XAER_RMERR.
> So enlistResource catches this and returns false.
> But the caller, TransactionEnlistingInterceptor.getConnection, does nothing
> with the return code and assumes all went well. So the corrupted XAResource
> stays in the pool and is still corrupted on the next try.
> In my opinion it should return the connection to the pool with a DESTROY
> action.
> I suggest that TransactionEnlistingInterceptor.getConnection look for a false
> return value when calling enlistResource and in this case doing a DESTROY as
> well.
> Patch for 2.1.3 coming up, I'll create one for 3.1 as well.
> Sorry for no unit test, but I'm running out of time.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira