[ 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.2.1.4.diff Patch for 2.1.4. > 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 > > > 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