You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2010/02/02 16:47:49 UTC
svn commit: r905676 - in /qpid/trunk/qpid/cpp/src: qpid/cluster/Cluster.cpp
qpid/cluster/FailoverExchange.cpp qpid/cluster/FailoverExchange.h
tests/cluster_test.cpp
Author: aconway
Date: Tue Feb 2 15:47:41 2010
New Revision: 905676
URL: http://svn.apache.org/viewvc?rev=905676&view=rev
Log:
Cluster: fix update of failover exchange.
During update the cluster was sending an extra update to the failover exchange.
Modified:
qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.cpp
qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.h
qpid/trunk/qpid/cpp/src/tests/cluster_test.cpp
Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp?rev=905676&r1=905675&r2=905676&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp Tue Feb 2 15:47:41 2010
@@ -826,7 +826,7 @@
if (state != UPDATEE) return; // Wait till we reach the stall point.
if (updatedMap) { // We're up to date
map = *updatedMap;
- memberUpdate(l);
+ failoverExchange->setUrls(getUrls(l));
mcast.mcastControl(ClusterReadyBody(ProtocolVersion(), myUrl.str()), self);
state = CATCHUP;
broker.setClusterUpdatee(false);
@@ -908,9 +908,9 @@
std::vector<Url> urls = getUrls(l);
std::vector<string> ids = getIds(l);
size_t size = urls.size();
- failoverExchange->setUrls(urls);
+ failoverExchange->updateUrls(urls);
- if (size == 1 && lastSize > 1 && state >= CATCHUP) {
+ if (size == 1 && lastSize > 1 && state >= CATCHUP) {
QPID_LOG(notice, *this << " last broker standing, update queue policies");
lastBroker = true;
broker.getQueues().updateQueueClusterState(true);
Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.cpp?rev=905676&r1=905675&r2=905676&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.cpp Tue Feb 2 15:47:41 2010
@@ -45,9 +45,13 @@
mgmtExchange->set_type(TYPE_NAME);
}
-
void FailoverExchange::setUrls(const vector<Url>& u) {
Lock l(lock);
+ urls = u;
+}
+
+void FailoverExchange::updateUrls(const vector<Url>& u) {
+ Lock l(lock);
urls=u;
if (urls.empty()) return;
std::for_each(queues.begin(), queues.end(),
Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.h?rev=905676&r1=905675&r2=905676&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/FailoverExchange.h Tue Feb 2 15:47:41 2010
@@ -41,8 +41,11 @@
static const std::string TYPE_NAME;
FailoverExchange(management::Manageable* parent);
-
+
+ /** Set the URLs but don't send an update.*/
void setUrls(const std::vector<Url>&);
+ /** Set the URLs and send an update.*/
+ void updateUrls(const std::vector<Url>&);
// Exchange overrides
std::string getType() const;
Modified: qpid/trunk/qpid/cpp/src/tests/cluster_test.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/cluster_test.cpp?rev=905676&r1=905675&r2=905676&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/cluster_test.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/cluster_test.cpp Tue Feb 2 15:47:41 2010
@@ -272,7 +272,7 @@
c0.session.queueDeclare("q", arg::durable=durableFlag);
c0.session.messageTransfer(arg::content=ttlMessage("a", "q", 200, durableFlag));
c0.session.messageTransfer(arg::content=makeMessage("b", "q", durableFlag));
- c0.session.messageTransfer(arg::content=ttlMessage("x", "p", 10000, durableFlag));
+ c0.session.messageTransfer(arg::content=ttlMessage("x", "p", 100000, durableFlag));
c0.session.messageTransfer(arg::content=makeMessage("y", "p", durableFlag));
cluster.add();
Client c2(cluster[1], "c2");
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org