[
https://issues.apache.org/jira/browse/AMQ-7185?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary Tully resolved AMQ-7185.
-----------------------------
Resolution: Fixed
> XA durable sub prepared acks don't block redelivery
> ---------------------------------------------------
>
> Key: AMQ-7185
> URL: https://issues.apache.org/jira/browse/AMQ-7185
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker, XA
> Affects Versions: 5.15.0
> Reporter: Gary Tully
> Assignee: Gary Tully
> Priority: Major
> Fix For: 5.16.0
>
>
> If a durable sub acks a message in an XA transaction, on prepare the disk
> image is updated and on recovery the messages is pending an outcome and won't
> be redelivered.
> however if the durable sub disconnects and reconnects without a broker
> restart, it can receive the same messages again. Acked and prepared messages
> should be blocked pending the xa transaction outcome.
> This duplicate delivery can result in duplicate acks and early deletion of
> the message due to the reference count. The end result, another sub may see
> the message pending but not be able to receive it b/c it has already been
> removed from the store.
> symptom in other words:
> durableSub1 and durableStub2 registered, send one message to the topic. The
> message reference count is 2.
> durabelSub1 does receive in xa transaction, prepares and dies. The ack needs
> recovery and completion via the transaction manager.
> durableSub1 reconnects and gets the same message again! commits success. The
> message reference count is decremented to 1.
> the first xa transaction gets recovered and commits, the duplicate ack gets
> processed; the message reference count is 0 and the message gets deleted in
> error.
> durableSub2 tries to receive, message pending is 1, but it does not get any
> message!
>
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)