diff options
author | Kenneth Anthony Giusti <kgiusti@apache.org> | 2012-10-03 13:36:37 +0000 |
---|---|---|
committer | Kenneth Anthony Giusti <kgiusti@apache.org> | 2012-10-03 13:36:37 +0000 |
commit | 378aa46b6ac8288e23a32672d47072457ee830dd (patch) | |
tree | 7eb4c198e4fc6ad6ad285fd5db8b4e0083f7eb51 /cpp | |
parent | e091121f8c4a153070fbb6bd5fc92136f3ebf55f (diff) | |
download | qpid-python-378aa46b6ac8288e23a32672d47072457ee830dd.tar.gz |
QPID-4347: do not store Links/Bridges if they are created via recovery.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1393479 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/qpid/broker/Broker.cpp | 3 | ||||
-rw-r--r-- | cpp/src/qpid/broker/Broker.h | 2 | ||||
-rw-r--r-- | cpp/src/qpid/broker/LinkRegistry.cpp | 5 |
3 files changed, 8 insertions, 2 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp index d45dbc61d2..5b59decd69 100644 --- a/cpp/src/qpid/broker/Broker.cpp +++ b/cpp/src/qpid/broker/Broker.cpp @@ -214,6 +214,7 @@ Broker::Broker(const Broker::Options& conf) : *this), mgmtObject(0), queueCleaner(queues, &timer), + recoveryInProgress(false), recovery(true), inCluster(false), clusterUpdatee(false), @@ -292,7 +293,9 @@ Broker::Broker(const Broker::Options& conf) : // broker to join a cluster. if (getRecovery()) { RecoveryManagerImpl recoverer(queues, exchanges, links, dtxManager); + recoveryInProgress = true; store->recover(recoverer); + recoveryInProgress = false; } else { QPID_LOG(notice, "Cluster recovery: recovered journal data discarded and journal files pushed down"); diff --git a/cpp/src/qpid/broker/Broker.h b/cpp/src/qpid/broker/Broker.h index 823ed54ddb..8104009fa9 100644 --- a/cpp/src/qpid/broker/Broker.h +++ b/cpp/src/qpid/broker/Broker.h @@ -180,6 +180,7 @@ class Broker : public sys::Runnable, public Plugin::Target, bool deferDeliveryImpl(const std::string& queue, const Message& msg); std::string federationTag; + bool recoveryInProgress; bool recovery; bool inCluster, clusterUpdatee; boost::intrusive_ptr<ExpiryPolicy> expiryPolicy; @@ -282,6 +283,7 @@ class Broker : public sys::Runnable, public Plugin::Target, void setRecovery(bool set) { recovery = set; } bool getRecovery() const { return recovery; } + bool inRecovery() const { return recoveryInProgress; } /** True of this broker is part of a cluster. * Only valid after early initialization of plugins is complete. diff --git a/cpp/src/qpid/broker/LinkRegistry.cpp b/cpp/src/qpid/broker/LinkRegistry.cpp index 6f813554fa..4fb9c6cd33 100644 --- a/cpp/src/qpid/broker/LinkRegistry.cpp +++ b/cpp/src/qpid/broker/LinkRegistry.cpp @@ -117,7 +117,8 @@ pair<Link::shared_ptr, bool> LinkRegistry::declare(const string& name, boost::bind(&LinkRegistry::linkDestroyed, this, _1), durable, authMechanism, username, password, broker, parent, failover)); - if (durable && store) store->create(*link); + if (durable && store && !broker->inRecovery()) + store->create(*link); links[name] = link; pendingLinks[name] = link; QPID_LOG(debug, "Creating new link; name=" << name ); @@ -213,7 +214,7 @@ pair<Bridge::shared_ptr, bool> LinkRegistry::declare(const std::string& name, args, init, queueName, altExchange)); bridges[name] = bridge; link.add(bridge); - if (durable && store) + if (durable && store && !broker->inRecovery()) store->create(*bridge); QPID_LOG(debug, "Bridge '" << name <<"' declared on link '" << link.getName() << |