summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorKenneth Anthony Giusti <kgiusti@apache.org>2012-10-03 13:36:37 +0000
committerKenneth Anthony Giusti <kgiusti@apache.org>2012-10-03 13:36:37 +0000
commit378aa46b6ac8288e23a32672d47072457ee830dd (patch)
tree7eb4c198e4fc6ad6ad285fd5db8b4e0083f7eb51 /cpp
parente091121f8c4a153070fbb6bd5fc92136f3ebf55f (diff)
downloadqpid-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.cpp3
-rw-r--r--cpp/src/qpid/broker/Broker.h2
-rw-r--r--cpp/src/qpid/broker/LinkRegistry.cpp5
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() <<