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

Guillaume Nodet resolved GERONIMO-6372.
---------------------------------------

    Resolution: Fixed

Not sure which version I should put. djencks ?
                
> RecoveryImpl completing in-progress transactions, XidFactoryImpl needs to be 
> smarter with matching
> --------------------------------------------------------------------------------------------------
>
>                 Key: GERONIMO-6372
>                 URL: https://issues.apache.org/jira/browse/GERONIMO-6372
>             Project: Geronimo
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>          Components: transaction manager
>    Affects Versions: 2.2
>         Environment: Aries, OSGI, camel, activemq
>            Reporter: Gary Tully
>            Assignee: Guillaume Nodet
>         Attachments: GERONIMO-6372.patch
>
>
> Given a camel route with from("activemq:a").to("activemq:b") in a Geronimo 
> managed XA transaction. On start/restart new transactions are created in 
> parallel with recovery of the jms components.
> There are two issues:
>  * The Recovery processing can match new transactions through the 
> XidFactory.matchXX methods and rollback new work in error. (Note: a 
> xa_recover of activemq correctly returns *all* prepared transactions)
>  * The XidFactoryImpl(byte[] seed) can create duplicate xids which could 
> potentially interfere with recovering transactions and makes it impossible to 
> determine from the logs what is going on.
> Xids should be globally unique and recoverable. So they need a persistent 
> unique seed (provided through configuration) and an ever increasing id.
> The current time provides a simple approach to an increasing id that negates 
> the need to persist the last used id in the transaction recovery log. 
> (It has the downside of regressing if the XidFactory is recreated in the same 
> millisecond, but I think this is in practice improbable outside unit tests.)
> If the id component is keyed of the epoch, a recovering XidFactory can match 
> only old Xids, ones created by it in a previous incarnation. In this way it 
> can avoid completing newly created transactions.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to