You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Martin Lichtin (Jira)" <ji...@apache.org> on 2021/01/27 21:06:01 UTC

[jira] [Comment Edited] (AMQ-7298) failover duplicate detection in error with batched local transactions

    [ https://issues.apache.org/jira/browse/AMQ-7298?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17273141#comment-17273141 ] 

Martin Lichtin edited comment on AMQ-7298 at 1/27/21, 9:05 PM:
---------------------------------------------------------------

I assume with this change now having merged into 5.16.x, I'm seeing a regression when upgrading from 5.15.14.

Server-side redeliveries triggered by the redeliveryPlugin or no longer coming thru, but are (incorrectly) suppressed.

The output from my test with 5.16.1 shows this:
{noformat}
       RedeliveryPlugin  175 | 40 - org.apache.activemq.activemq-osgi - 5.16.1 | redelivery #1 of: ID:mlipc2-4159-1611768583683-1:15:1:1:41 with delay: 1000, dest: queue://TEST2.msgin
ActiveMQMessageConsumer 1485 | 40 - org.apache.activemq.activemq-osgi - 5.16.1 | ID:mlipc2-4159-1611768583683-1:16:1:1 suppressing duplicate delivery on connection, poison acking: MessageDispatch {commandId = 0, responseRequired = false, consumerId = ID:mlipc2-4159-1611768583683-1:16:1:1, destination = queue://TEST2.msgin, message = ActiveMQTextMessage {commandId = 125, responseRequired = true, messageId = ID:mlipc2-4159-1611768583683-1:15:1:1:41, originalDestination = null, originalTransactionId = null, producerId = ID:mlipc2-4159-1611768583683-1:15:1:1, destination = queue://TEST2.msgin, transactionId = null, expiration = 0, timestamp = 1611768605501, arrival = 0, brokerInTime = 1611768607001, brokerOutTime = 1611768607012, correlationId = null, replyTo = null, persistent = true, type = null, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = org.apache.activemq.util.ByteSequence@5f105a66, marshalledProperties = org.apache.activemq.util.ByteSequence@5b2fd55c, dataStructure = null, redeliveryCounter = 1, size = 0, properties = {redeliveryDelay=1000, scheduledJobId=ID:mlipc2-4159-1611768583683-1:15:1:1:2}, readOnlyProperties = true, readOnlyBody = true, droppable = false, jmsXGroupFirstForConsumer = false, text = XXX}, redeliveryCounter = 1}
{noformat}


was (Author: lichtin):
I assume with this change now having merged into 5.16.x, I'm seeing a regression when upgrading from 5.15.14.

Server-side redeliveries triggered by the redeliveryPlugin or no longer coming thru, but are (incorrectly) suppressed.

The output from my test with 5.16.1 shows this:
{noformat}
        RedeliveryPlugin  175 | 40 - org.apache.activemq.activemq-osgi - 5.16.1 | redelivery #1 of: ID:mlipc2-4159-1611768583683-1:15:1:1:41 with delay: 1000, dest: queue://TEST2.msgin
ActiveMQMessageConsumer 1485 | 40 - org.apache.activemq.activemq-osgi - 5.16.1 | ID:mlipc2-4159-1611768583683-1:16:1:1 suppressing duplicate delivery on connection, poison acking: MessageDispatch {commandId = 0, responseRequired = false, consumerId = ID:mlipc2-4159-1611768583683-1:16:1:1, destination = queue://TEST2.msgin, message = ActiveMQTextMessage {commandId = 125, responseRequired = true, messageId = ID:mlipc2-4159-1611768583683-1:15:1:1:41, originalDestination = null, originalTransactionId = null, producerId = ID:mlipc2-4159-1611768583683-1:15:1:1, destination = queue://TEST2.msgin, transactionId = null, expiration = 0, timestamp = 1611768605501, arrival = 0, brokerInTime = 1611768607001, brokerOutTime = 1611768607012, correlationId = null, replyTo = null, persistent = true, type = null, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = org.apache.activemq.util.ByteSequence@5f105a66, marshalledProperties = org.apache.activemq.util.ByteSequence@5b2fd55c, dataStructure = null, redeliveryCounter = 1, size = 0, properties = {redeliveryDelay=1000, scheduledJobId=ID:mlipc2-4159-1611768583683-1:15:1:1:2}, readOnlyProperties = true, readOnlyBody = true, droppable = false, jmsXGroupFirstForConsumer = false, text = XXX}, redeliveryCounter = 1}
{noformat}

> failover duplicate detection in error with batched local transactions
> ---------------------------------------------------------------------
>
>                 Key: AMQ-7298
>                 URL: https://issues.apache.org/jira/browse/AMQ-7298
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>    Affects Versions: 5.15.0
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>            Priority: Major
>             Fix For: 5.16.0
>
>
> Messages can get poisonAcked in error as duplicate deliveries when a local transaction rollback during/after a failover (auto reconnect) event.
> The interaction between rollback and failover redelivery has a bunch of timing issues and did create duplicates in-error that resulted in over eager suppression.
> There are a bunch of related tests that validate expected behaviour, the related fixes needed to be revisited to better manage the delivered and unconsumed messages in the context of a local transaction and to avoid the real duplication of delivery in the client.
> There is an additional new test that demonstrates the additional dlq or duplicates behaviour.
> a nice cross section from the unit test suite is:
> mvn clean install -Dtest=CloseRollbackRedeliveryQueueTest,AMQ2149Test,JMSQueueRedeliverTest,RedeliveryPolicyTest,FailoverTransactionTest,FailoverDurableSubTransactionTest,JMSConsumerTest,JmsSessionRecoverTest,AMQ2751Test



--
This message was sent by Atlassian Jira
(v8.3.4#803005)