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