From b862462df1b77c69a0688d7197947d780c36eab0 Mon Sep 17 00:00:00 2001 From: Kim van der Riet Date: Thu, 28 Jan 2010 16:52:38 +0000 Subject: Fix for QPID-2373 - Durable exchange state not replicated to broker joining cluster git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@904154 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/ExchangeRegistry.cpp | 3 +-- cpp/src/qpid/cluster/Connection.cpp | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'cpp/src') diff --git a/cpp/src/qpid/broker/ExchangeRegistry.cpp b/cpp/src/qpid/broker/ExchangeRegistry.cpp index 951cdbd395..f4a860fa1e 100644 --- a/cpp/src/qpid/broker/ExchangeRegistry.cpp +++ b/cpp/src/qpid/broker/ExchangeRegistry.cpp @@ -54,8 +54,7 @@ pair ExchangeRegistry::declare(const string& name, c 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(); diff --git a/cpp/src/qpid/cluster/Connection.cpp b/cpp/src/qpid/cluster/Connection.cpp index 1c6be4e862..3f37d63255 100644 --- a/cpp/src/qpid/cluster/Connection.cpp +++ b/cpp/src/qpid/cluster/Connection.cpp @@ -477,6 +477,9 @@ void Connection::accumulatedAck(const qpid::framing::SequenceSet& s) { void Connection::exchange(const std::string& encoded) { Buffer buf(const_cast(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()); } -- cgit v1.2.1