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

nmeylan updated ARTEMIS-4794:
-----------------------------
    Description: 
+Attached test *BridgeDuplicateMessagesARTEMIS4794Test.java* **+ highlights the 
issue with+ org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl

Place it under 
_tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge_

{*}Summary{*}:
     When a bridge is stopped while messages being consumed by the target node, 
it can lead to duplicate messages.


{*}Description{*}:
When Using bridge and programmatically *stopping* or *pausing* it while 
messages are being consumed by the target node, the source node fails to get 
the acknowledgement from target node and messages now exists on the source and 
the target node.

It appears that the "active" flag being set to false when 
BridgeImpl.StopRunnable is called prevent message to be acknowledged by 
_BridgeImpl::sendAcknowledged_ function

 

{*}Context{*}:
This bug appear in my code because is start and stop Bridge programmatically to 
move messages from one node to another when some conditions are met, if they 
are no longer met I want to stop the moving of messages.
 

*Notes:*
 * Changing bridge configuration 
{_}useDuplicateDetection{_},{_}confirmationWindowSize{_} or 
_producerWindowSize_ parameter do not help to mitigate the issue
 * Not related to large messages, i use large messages in my test to ease 
reproduction 
 * Bug present on 2.30 and 2.34

 

*Resolution:*
Maybe _StopRunnable::run_ should wait until _queue.getDeliveringCount() == 0_ 
after removing consumer but before going further in the stop process

  was:
+Attached test *BridgeDuplicateMessagesARTEMIS4794Test.java* **+ highlights the 
issue with+ org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl

Place it under 
_tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge_

{*}Summary{*}:
     When a bridge is stopped while messages being consumed by the target node, 
it can lead to duplicate messages.
{*}Description{*}:
When Using bridge and programmatically *stopping* or *pausing* it while 
messages are being consumed by the target node, the source node fails to get 
the acknowledgement from target node and messages now exists on the source and 
the target node.

It appears that the "active" flag being set to false when 
BridgeImpl.StopRunnable is called prevent message to be acknowledged by 
_BridgeImpl::sendAcknowledged_ function

{*}Context{*}:
This bug appear in my code because is start and stop Bridge programmatically to 
move messages from one node to another when some conditions are met, if they 
are no longer met I want to stop the moving of messages.
 

*Notes:*
 * Changing bridge configuration 
{_}useDuplicateDetection{_},{_}confirmationWindowSize{_} or 
_producerWindowSize_ parameter do not help to mitigate the issue
 * Not related to large messages, i use large messages in my test to ease 
reproduction 
 * Bug present on 2.30 and 2.34

 

*Resolution:*
Maybe _StopRunnable::run_ should wait until _queue.getDeliveringCount() == 0_ 
after removing consumer but before going further in the stop process


> CoreBridge: Duplicate message when bridge is stopped while messages being 
> consumed by target node
> -------------------------------------------------------------------------------------------------
>
>                 Key: ARTEMIS-4794
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4794
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Clustering
>    Affects Versions: 2.30.0, 2.34.0
>            Reporter: nmeylan
>            Priority: Major
>         Attachments: BridgeDuplicateMessagesARTEMIS4794Test.java
>
>
> +Attached test *BridgeDuplicateMessagesARTEMIS4794Test.java* **+ highlights 
> the issue with+ 
> org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl
> Place it under 
> _tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge_
> {*}Summary{*}:
>      When a bridge is stopped while messages being consumed by the target 
> node, it can lead to duplicate messages.
> {*}Description{*}:
> When Using bridge and programmatically *stopping* or *pausing* it while 
> messages are being consumed by the target node, the source node fails to get 
> the acknowledgement from target node and messages now exists on the source 
> and the target node.
> It appears that the "active" flag being set to false when 
> BridgeImpl.StopRunnable is called prevent message to be acknowledged by 
> _BridgeImpl::sendAcknowledged_ function
>  
> {*}Context{*}:
> This bug appear in my code because is start and stop Bridge programmatically 
> to move messages from one node to another when some conditions are met, if 
> they are no longer met I want to stop the moving of messages.
>  
> *Notes:*
>  * Changing bridge configuration 
> {_}useDuplicateDetection{_},{_}confirmationWindowSize{_} or 
> _producerWindowSize_ parameter do not help to mitigate the issue
>  * Not related to large messages, i use large messages in my test to ease 
> reproduction 
>  * Bug present on 2.30 and 2.34
>  
> *Resolution:*
> Maybe _StopRunnable::run_ should wait until _queue.getDeliveringCount() == 0_ 
> after removing consumer but before going further in the stop process



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@activemq.apache.org
For additional commands, e-mail: issues-h...@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact


Reply via email to