summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/ha/Backup.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2012-06-22 19:28:42 +0000
committerAlan Conway <aconway@apache.org>2012-06-22 19:28:42 +0000
commitaba9e1977bf31b82a9ae87ee7d84d7c0ccd50328 (patch)
tree306f5fa72d657a5bd08fd4d432a56f36f5017cce /cpp/src/qpid/ha/Backup.cpp
parent6dbd8a154b4c969ce76c7992b5e377d1604bc244 (diff)
downloadqpid-python-aba9e1977bf31b82a9ae87ee7d84d7c0ccd50328.tar.gz
NO-JIRA: Simplify locking and remove member-update callback in HA code.
Get rid of the separate Membership lock and put HaBroker in control of membership changes. Removes a potential deadlock which could explain some observed failures in long-running failover tests. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1353001 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/ha/Backup.cpp')
-rw-r--r--cpp/src/qpid/ha/Backup.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/cpp/src/qpid/ha/Backup.cpp b/cpp/src/qpid/ha/Backup.cpp
index 90c615aaf5..4b9cef05bc 100644
--- a/cpp/src/qpid/ha/Backup.cpp
+++ b/cpp/src/qpid/ha/Backup.cpp
@@ -83,6 +83,8 @@ void Backup::initialize(const Url& brokers) {
false, // durable
settings.mechanism, settings.username, settings.password,
false); // amq.failover
+
+ sys::Mutex::ScopedLock l(lock);
link = result.first;
link->setUrl(url);
replicator.reset(new BrokerReplicator(haBroker, link));
@@ -93,7 +95,6 @@ void Backup::initialize(const Url& brokers) {
Backup::~Backup() {
if (link) link->close();
if (replicator.get()) broker.getExchanges().destroy(replicator->getName());
- replicator.reset();
}