-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
None
-
None
An application on EAP (in this case the HornetQ bridge) passes a message to ActiveMQ, as part of an XA transaction, using an XA connection factory. The send() to ActiveMQ fails, for some reason (e.g., insufficient storage). The transaction does not roll back – the consumption by the bridge from HornetQ appears to have succeeded, but the message is lost. Nothing is retried.
An exception corresponding to the ActiveMQ failure is seen in the EAP logs. However, it can be seen that it is in a different thread of execution from the one that called the send() method to pass the message to ActiveMQ. By the time this exception is raised, the transaction has already completed successfully, so far as EAP is concerned.
The ActiveMQ connection URI includes jms.useAsyncSend=false, which is supposed to put the send and the transaction commit in to the same thread. However, this attribute appears to have no effect.
- is related to
-
ENTMQ-1697 Implement improved transaction handling from AMQ-3166: client calls to createProducer() and send() successful even though BrokerFilter methods throw exceptions
- Closed