geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Florent Guillaume (JIRA)" <>
Subject [jira] Updated: (GERONIMO-5870) Remove connection from pool if it fails to enlist
Date Wed, 16 Mar 2011 13:29:29 GMT


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:
>             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:

View raw message