[
https://issues.apache.org/jira/browse/AMQ-5279?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Hadrian Zbarcea updated AMQ-5279:
---------------------------------
Fix Version/s: 5.10.1
> failover redelivery to alternative consumers with pending transaction causes
> rollback *and* dlq processing
> -----------------------------------------------------------------------------------------------------------
>
> Key: AMQ-5279
> URL: https://issues.apache.org/jira/browse/AMQ-5279
> Project: ActiveMQ
> Issue Type: Bug
> Components: JMS client
> Affects Versions: 5.10.0
> Reporter: Gary Tully
> Assignee: Gary Tully
> Labels: dlq, failover, redelivery, transaction
> Fix For: 5.10.1, 5.11.0
>
>
> failover isolates the application client from transport failures. For a
> single consumer, if there is a pending transaction and an ack is lost the
> transaction can still commit after failover if the messages is redispatched.
> If it is not redispatched, then the transaction will rollback.
> With multiple consumers it is possible that an alternative consumer will get
> redelivery. If the alternative consumer is on a different connection the
> duplicate dispatch (tracked by a connection) is not identified, redelivery
> ensues and the pending transaction rolls back.
> If the consumer is on the same connection, the redelivery is treated as a
> duplicate, the message gets a poison ack and the pending transaction rolls
> back. This is a double whammy and results in a delivery to the DLQ in error.
> The redelivery should be routed to the alternative consumer as if it were on
> a different connection so that the message can be consumed.
> We should DLQ only when the redispatch is not pending on any consumer.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)