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

ASF subversion and git services commented on QPID-5966:
-------------------------------------------------------

Commit 1616704 from [~aconway] in branch 'qpid/trunk'
[ https://svn.apache.org/r1616704 ]

QPID-5966: HA mixing tx enqueue and non-tx dequeue leaves extra messages on 
backup.

There were several problems:

1. Positions of transactionally enqueued messages not known to QueueReplicator, 
so not dequeued
   on backup if dequeued outside a TX on primary.

2. Race condition if tx created immediately after queue could cause duplication 
of TX message.

3. Replication IDs were not being set during recovery from store (regression, 
store change?)

Fix:

1. Update positions QueueReplicator positions via QueueObserver::enqueued to 
see all enqueues.
2. Check for duplicate replication-ids on backup in QueueReplicator::route.
3. Set replication-id in publish() if not already set in record().

>  HA mixing tx enqueue and non-tx dequeue leaves extra messages on backup
> ------------------------------------------------------------------------
>
>                 Key: QPID-5966
>                 URL: https://issues.apache.org/jira/browse/QPID-5966
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Clustering
>    Affects Versions: 0.28
>            Reporter: Alan Conway
>            Assignee: Alan Conway
>
> Description of problem:
> With HA enabled, 2 or more node cluster. If a message is enqueued in a 
> transaction, and then dequeued with no transaction, the message is left on 
> the backup brokers.
> Version-Release number of selected component (if applicable):
> Up to trunk r1615992, 0.22-mrg f22fae4
> How reproducible: 100%
> Steps to Reproduce:
> qpid-send -a 'q;{create:always}' -b 20.0.20.200 --content-string foo --tx 1
> qpid-receive -a 'q;{create:always}' -b 20.0.20.200
> Then on each node:
> qpid-stat -q --ha-admin
> Actual results:
> Primary q is empty, backup q still has 1 message
> Message is enqueued twice on backup and dequeued only once.
> Expected results:
> Primary and backup q empty, message enqueued and dequeued once on primary and 
> backup
> Additional info:
> With a tx dequeue (add --tx 1 to qpid-receive) the message is removed 
> completely on the backup so at first glance things appear OK. However 
> qpid-stat shows it is enqueued and dequeued _twice_ which is incorrect.
> Using the python client there is still a message left on the backup, but 
> there is only 1 enqueue and no dequeue, rather than 2 enqueues and 1 dequeue.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to