[
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]