[
https://issues.apache.org/jira/browse/AMQ-4634?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary Tully resolved AMQ-4634.
-----------------------------
Resolution: Fixed
Fix Version/s: 5.9.0
thanks for the verification.
> Losing messages when there is a XA trx timeout
> ----------------------------------------------
>
> Key: AMQ-4634
> URL: https://issues.apache.org/jira/browse/AMQ-4634
> Project: ActiveMQ
> Issue Type: Bug
> Affects Versions: 5.6.0, 5.7.0, 5.8.0
> Environment: JBoss 6.1.
> ActiveMQ 5.8.0 (also tested in 5.7.0 and 5.6.0) standalone mode.
> Reporter: Gaston Scapusio
> Assignee: Gary Tully
> Fix For: 5.9.0
>
> Attachments: logs.txt
>
>
> ActiveMQ does a trx commit when there is a transaction timeout
> (EJBTransactionRolledbackException). In this way we are losing messages when
> there is any timeout.
> We have seen that the activemq connections are enlist in XA.
> The attribute transactionContext from ActiveMQSession class has the global
> transaction reference (xid) before calling the MDB
> (messageListener.onMessage(message)).
> When the timeout is reached and the RuntimeException is throwned, the
> transactionContext losed the xid reference.
> Later, when ActiveMQSession call the method
> transactionContext.isInXATransaction() the result is false because there is
> no xid reference.
> This situation only happened when the MDB calls other EJB (Stateless) with
> CMT - TransactionAttributeType.REQUIRES_NEW, and the exception is throwed
> inside the Stateless.
> I've tried to reproduce this without calling the stateless ejb but it works
> well.
> The ActiveMQSession class should retain the original transactionContext.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira