diff options
| author | Gordon Sim <gsim@apache.org> | 2009-06-05 17:39:07 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2009-06-05 17:39:07 +0000 |
| commit | 6efddffd3c04fc16d2e63ccfa9db6c6ad0798825 (patch) | |
| tree | 7b9e3b3b7e02b058af5919649cc0831bee99605a /cpp/src/qpid/cluster | |
| parent | db28bbe4b54cef5457e5349f85a154393db70a8d (diff) | |
| download | qpid-python-6efddffd3c04fc16d2e63ccfa9db6c6ad0798825.tar.gz | |
Further fix to new cluster member state transfer to fix a case where unacked messages on ring policy queue cause inconsistencies in queue state between nodes.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@782075 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/cluster')
| -rw-r--r-- | cpp/src/qpid/cluster/Connection.cpp | 3 | ||||
| -rw-r--r-- | cpp/src/qpid/cluster/Connection.h | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/cluster/UpdateClient.cpp | 1 |
3 files changed, 4 insertions, 1 deletions
diff --git a/cpp/src/qpid/cluster/Connection.cpp b/cpp/src/qpid/cluster/Connection.cpp index f2904c6734..be6281b4e3 100644 --- a/cpp/src/qpid/cluster/Connection.cpp +++ b/cpp/src/qpid/cluster/Connection.cpp @@ -325,6 +325,7 @@ void Connection::deliveryRecord(const string& qname, bool completed, bool ended, bool windowing, + bool enqueued, uint32_t credit) { broker::QueuedMessage m; @@ -333,7 +334,7 @@ void Connection::deliveryRecord(const string& qname, if (acquired) { // Message is on the update queue m = getUpdateMessage(); m.queue = queue.get(); - queue->enqueued(m); //inform queue of the message + if (enqueued) queue->enqueued(m); //inform queue of the message } else { // Message at original position in original queue m = queue->find(position); } diff --git a/cpp/src/qpid/cluster/Connection.h b/cpp/src/qpid/cluster/Connection.h index a0be2203e4..8e3b0ad337 100644 --- a/cpp/src/qpid/cluster/Connection.h +++ b/cpp/src/qpid/cluster/Connection.h @@ -129,6 +129,7 @@ class Connection : bool completed, bool ended, bool windowing, + bool enqueued, uint32_t credit); void queuePosition(const std::string&, const framing::SequenceNumber&); diff --git a/cpp/src/qpid/cluster/UpdateClient.cpp b/cpp/src/qpid/cluster/UpdateClient.cpp index 7fdbe73926..332e74c512 100644 --- a/cpp/src/qpid/cluster/UpdateClient.cpp +++ b/cpp/src/qpid/cluster/UpdateClient.cpp @@ -372,6 +372,7 @@ void UpdateClient::updateUnacked(const broker::DeliveryRecord& dr) { dr.isComplete(), dr.isEnded(), dr.isWindowing(), + dr.getQueue()->isEnqueued(dr.getMessage()), dr.getCredit() ); } |
