summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
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
commitb9d9e21d7101653957a2fdea17f392d188aaa056 (patch)
treed1ab158a4a47ce7ed4a2167d7a7dd46343108b71 /qpid/cpp/src
parent56286996d2840185a9e4df23781d033d20e20f8b (diff)
downloadqpid-python-b9d9e21d7101653957a2fdea17f392d188aaa056.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@1393479 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/broker/Broker.cpp3
-rw-r--r--qpid/cpp/src/qpid/broker/Broker.h2
-rw-r--r--qpid/cpp/src/qpid/broker/LinkRegistry.cpp5
3 files changed, 8 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/broker/Broker.cpp b/qpid/cpp/src/qpid/broker/Broker.cpp
index d45dbc61d2..5b59decd69 100644
--- a/qpid/cpp/src/qpid/broker/Broker.cpp
+++ b/qpid/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/qpid/cpp/src/qpid/broker/Broker.h b/qpid/cpp/src/qpid/broker/Broker.h
index 823ed54ddb..8104009fa9 100644
--- a/qpid/cpp/src/qpid/broker/Broker.h
+++ b/qpid/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/qpid/cpp/src/qpid/broker/LinkRegistry.cpp b/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
index 6f813554fa..4fb9c6cd33 100644
--- a/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
+++ b/qpid/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() <<