You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2010/01/28 17:52:39 UTC

svn commit: r904154 - in /qpid/trunk/qpid/cpp/src/qpid: broker/ExchangeRegistry.cpp cluster/Connection.cpp

Author: kpvdr
Date: Thu Jan 28 16:52:38 2010
New Revision: 904154

URL: http://svn.apache.org/viewvc?rev=904154&view=rev
Log:
Fix for QPID-2373 - Durable exchange state not replicated to broker joining cluster

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp
    qpid/trunk/qpid/cpp/src/qpid/cluster/Connection.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp?rev=904154&r1=904153&r2=904154&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp Thu Jan 28 16:52:38 2010
@@ -54,8 +54,7 @@
             exchange = Exchange::shared_ptr(new HeadersExchange(name, durable, args, parent, broker));
         }else if (type == ManagementExchange::typeName) {
             exchange = Exchange::shared_ptr(new ManagementExchange(name, durable, args, parent, broker));
-        }
-	else{
+        }else{
             FunctionMap::iterator i =  factory.find(type);
             if (i == factory.end()) {
                 throw UnknownExchangeTypeException();    

Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/Connection.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/Connection.cpp?rev=904154&r1=904153&r2=904154&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/cluster/Connection.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/Connection.cpp Thu Jan 28 16:52:38 2010
@@ -477,6 +477,9 @@
 void Connection::exchange(const std::string& encoded) {
     Buffer buf(const_cast<char*>(encoded.data()), encoded.size());
     broker::Exchange::shared_ptr ex = broker::Exchange::decode(cluster.getBroker().getExchanges(), buf);
+    if(ex.get() && ex->isDurable() && !ex->getName().find("amq.") == 0 && !ex->getName().find("qpid.") == 0) {
+        cluster.getBroker().getStore().create(*(ex.get()), ex->getArgs());
+    }
     QPID_LOG(debug, cluster << " updated exchange " << ex->getName());
 }
 



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org