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

ASF subversion and git services commented on ARTEMIS-2649:
----------------------------------------------------------

Commit 7096bc187a0182a597122ed4011397d78017014b in activemq-artemis's branch 
refs/heads/master from Justin Bertram
[ https://gitbox.apache.org/repos/asf?p=activemq-artemis.git;h=7096bc1 ]

ARTEMIS-2649 always over-write ORIG message props

ORIG message propertes like _AMQ_ORIG_ADDRESS are added to messages
during various broker operations (e.g. diverting a message, expiring a
message, etc.). However, if multiple operations try to set these
properties on the same message (e.g. administratively moving a message
which eventually gets sent to a dead-letter address) then important
details can be lost. This is particularly problematic when using
auto-created dead-letter or expiry resources which use filters based on
_AMQ_ORIG_ADDRESS and can lead to message loss.

This commit simply over-writes the existing ORIG properties rather than
preserving them so that the most recent information is available.


> Auto-create DLQ message loss when moving messages between destinations
> ----------------------------------------------------------------------
>
>                 Key: ARTEMIS-2649
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2649
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 2.12.0
>         Environment: Centos 7 container in OKD with Java 8.
>            Reporter: Piotr Klimczak
>            Priority: Major
>          Time Spent: 3h 50m
>  Remaining Estimate: 0h
>
> [~jbertram], first of all thanks a lot for ARTEMIS-2587 implementation.
>  This was a must for me to switch to Artemis.
>  In past I have even tried to implement it in Artermis, but having no 
> previous experience with it, only with your PR I understood how nicely and 
> easily it can be implemented and how much I have overcomplicated it.
> So I am testing 2.12.0 snapshot as I am really interested in work done under 
> ARTEMIS-2587.
>  I am connecting using open wire protocol using camel-jms component, having 
> replaced old AMQ5 with Artermis.
> On failed consumption, I can see queue being created under DLQ address with 
> multicast and filter _AMQ_ORIG_ADDRESS = 'some.queue'.
>  However it is empty and message is lost.
> Reproduction scenario:
>  # Sending message to address A
>  # Moving message from A queue to B using web console move function
>  # Consuming from B and failing consumption
> Observed state:
>  # Queue is being created
>  # Message is lost and logs are not indicating anything
> As a result this message being moved from A to be B queue, the header 
> "_AMQ_ORIG_ADDRESS" has value "A" instead of "B" and therefore it does not 
> match the filter "B" and is getting lost.



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

Reply via email to