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

Pavel Moravec commented on QPID-5642:
-------------------------------------

Review https://reviews.apache.org/r/19566/ pending on Alan's improvements to 
the replication sequence for newcomers brokers.

> Message sequence numbers (enabled with qpid.msg_sequence) should be 
> persistent across broker restarts
> -----------------------------------------------------------------------------------------------------
>
>                 Key: QPID-5642
>                 URL: https://issues.apache.org/jira/browse/QPID-5642
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>    Affects Versions: 0.26
>            Reporter: Pavel Moravec
>            Assignee: Pavel Moravec
>            Priority: Minor
>
> The C++ broker supports currently only at-least-once and at-most-once 
> reliability. Therefore duplicate messages may occur, especially in situations 
> involving failovers, reconnects etc. Currently, the broker doesn't offer any 
> specific solution for duplicate detection. For many messaging scenarios, it 
> is crucial to process every message only once to avoid errors. 
> The broker supports message sequencing on exchange level. The message 
> sequencing assigns a sequence number to every message which is routed via the 
> exchange. In theory, this can be used to detect duplicates. Unfortunately, 
> the sequence number isn't stored persistently and is restarted with every 
> restart of the broker (HA cluster) and starts again from 1. That makes the 
> use of the sequence number for duplicate detection quite complicated, 
> especially since the restart of the broker is also the situation when the 
> duplicates may occur.
> Therefore, it is required to update message sequence numbers (enabled with 
> qpid.msg_sequence) to store/journal after every (pre)route of a durable 
> exchange, in order to persist the sequence numbers accross broker restart.
>       
> Reproducer:
> rm -rf /var/lib/qpidd/* output.txt
> service qpidd restart
> qpid-config add exchange fanout myFanout --sequence --durable
> qpid-receive -a myFanout --connection-options="{reconnect:true}" -f 
> --print-content=no --print-header=yes -m 6 > output.txt 2>/dev/null &
> sleep 1
> qpid-send -a myFanout -m 3
> service qpidd restart
> sleep 1
> qpid-send -a myFanout -m 3
> cat output.txt
> Current output:
> Properties: {qpid.msg_sequence:1, sn:1, ts:1394611002529779545, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:2, sn:2, ts:1394611002529879589, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:3, sn:3, ts:1394611002529896423, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:1, sn:1, ts:1394611004142278196, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:2, sn:2, ts:1394611004142340093, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:3, sn:3, ts:1394611004142354743, 
> x-amqp-0-10.routing-key:}
> Expected output:
> Properties: {qpid.msg_sequence:1, sn:1, ts:1394611002529779545, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:2, sn:2, ts:1394611002529879589, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:3, sn:3, ts:1394611002529896423, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:4, sn:1, ts:1394611004142278196, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:5, sn:2, ts:1394611004142340093, 
> x-amqp-0-10.routing-key:}
> Properties: {qpid.msg_sequence:6, sn:3, ts:1394611004142354743, 
> x-amqp-0-10.routing-key:}
> (sn comes from qpid-send so it will be re-set to 1)



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to