You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2011/05/06 15:57:03 UTC

[jira] [Resolved] (AMQ-3305) Implement "exactly once" delivery with kahaDB and XA in the event of a failure post prepare

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

Gary Tully resolved AMQ-3305.
-----------------------------

    Resolution: Fixed

fix in http://svn.apache.org/viewvc?rev=1100208&view=rev

camel xml with route from jms queue to jdbc that does XA is at: http://svn.apache.org/viewvc/activemq/trunk/activemq-camel/src/test/resources/org/apache/activemq/camel/jmsXajdbc.xml?view=markup

> Implement "exactly once" delivery with kahaDB and XA in the event of a failure post prepare
> -------------------------------------------------------------------------------------------
>
>                 Key: AMQ-3305
>                 URL: https://issues.apache.org/jira/browse/AMQ-3305
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: Message Store
>    Affects Versions: 5.5.0
>         Environment: XA (with Geronimo for TM in the camel route test)
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>              Labels: 2pc, XA, camel, geronimo
>             Fix For: 5.6.0
>
>
> With XA 2PC, a camel route, jms 'to' jdbc should ensure exactly once delivery to jdbc. In the event of a failure after prepare, where commit to jdbc is done, the jms message must remain with a pending ack till the commit outcome is relayed from the transaction manager.
> Current versions of geronimo will correctly retry the commit in a timer thread, so activemq eventually gets the commit outcome after recovery. (btw: it looks like howl will not persist a commit outcome per NamedXAResource, so after a failure of the TM it may consier the transaction completed and the message may still be pending, need to check that!)
> At the moment, ActiveMQ does a heuristic rollback after recovery which leads to message redelivery in error.
> With the fix, an acked message remains pending awaiting the outcome. On commit, the message is acked. On rollback the message is available for redelivery.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira