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

Iliya Grushevskiy updated ARTEMIS-3815:
---------------------------------------
    Description: 
Given two brokers *A* and {*}B{*}, with configured mirror *A* towards *B* and a 
queue {*}Q{*}. If disk operations on *B* are slow, and there are active 
exchanges of messages on queue {*}Q{*}, for example:
 # Send message 1
 # ACK message 1
 # Send message 2
 # ACK message 2
 # ...

At the end queue *Q* on *B* will contain some unacknowledged messages, while 
queue *Q* on *A* will be empty.

The issue is that commit in sendMessage may take some time and ref to message 
will be written to the intermediate store only after receiving an ACK for this 
message.

  was:
Given two brokers *A* and {*}B{*}, with configured mirror *A* towards *B* and a 
queue {*}Q{*}. If disk operations on *B* are slow, and there are active 
exchanges of messages on queue {*}Q{*}, for example:
 # Send message 1
 # ACK message 1
 # Send message 2
 # ACK message 2
 # ...

At the end queue *Q* on *B* will contain some unacknowledged messages, while 
queue *Q* on *A* will be empty.

The issue is that commit in sendMessage may take some time and ref to message 
will be written to the intermediate store only after receiving an ACK for this 
message.

 

Test with synthetic delay: 
https://github.com/iliya-gr/activemq-artemis/tree/mirror-fast-ack


> Target mirror controller may commit received message after receiving ACK for 
> it
> -------------------------------------------------------------------------------
>
>                 Key: ARTEMIS-3815
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-3815
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: AMQP
>    Affects Versions: 2.19.1, 2.21.0, 2.22.0
>            Reporter: Iliya Grushevskiy
>            Priority: Major
>
> Given two brokers *A* and {*}B{*}, with configured mirror *A* towards *B* and 
> a queue {*}Q{*}. If disk operations on *B* are slow, and there are active 
> exchanges of messages on queue {*}Q{*}, for example:
>  # Send message 1
>  # ACK message 1
>  # Send message 2
>  # ACK message 2
>  # ...
> At the end queue *Q* on *B* will contain some unacknowledged messages, while 
> queue *Q* on *A* will be empty.
> The issue is that commit in sendMessage may take some time and ref to message 
> will be written to the intermediate store only after receiving an ACK for 
> this message.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to