summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2012-07-04 19:04:38 +0000
committerAlan Conway <aconway@apache.org>2012-07-04 19:04:38 +0000
commit838c1dfabd6cb2ac38a0658b8437cdcdb6beea55 (patch)
tree07b72d53afaedde9f02a47ad60d62abcf0e2bf87 /cpp
parenta6d07617ce8000e81d59a95d85f8c6ef9cfca2de (diff)
downloadqpid-python-838c1dfabd6cb2ac38a0658b8437cdcdb6beea55.tar.gz
NO-JIRA: Trivial fix for crash-on-exit bug.
Primary::~Primary() no longer resets HaBroker::observer. It is unnecessary since HaBroker unregisters the observer before Primary is destroyed, and it cause sporadic crash on exit because the HaBroker::observer can be reset before ~Primary is called. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1357370 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/qpid/ha/HaBroker.cpp2
-rw-r--r--cpp/src/qpid/ha/HaBroker.h2
-rw-r--r--cpp/src/qpid/ha/Primary.cpp1
3 files changed, 2 insertions, 3 deletions
diff --git a/cpp/src/qpid/ha/HaBroker.cpp b/cpp/src/qpid/ha/HaBroker.cpp
index 395a3ce6fa..6cd78cab20 100644
--- a/cpp/src/qpid/ha/HaBroker.cpp
+++ b/cpp/src/qpid/ha/HaBroker.cpp
@@ -60,9 +60,9 @@ HaBroker::HaBroker(broker::Broker& b, const Settings& s)
broker(b),
systemId(broker.getSystem()->getSystemId().data()),
settings(s),
+ observer(new ConnectionObserver(*this, systemId)),
mgmtObject(0),
status(STANDALONE),
- observer(new ConnectionObserver(*this, systemId)),
brokerInfo(broker.getSystem()->getNodeName(),
// TODO aconway 2012-05-24: other transports?
broker.getPort(broker::Broker::TCP_TRANSPORT), systemId),
diff --git a/cpp/src/qpid/ha/HaBroker.h b/cpp/src/qpid/ha/HaBroker.h
index 28fe3c755e..78433cfbd9 100644
--- a/cpp/src/qpid/ha/HaBroker.h
+++ b/cpp/src/qpid/ha/HaBroker.h
@@ -116,13 +116,13 @@ class HaBroker : public management::Manageable
const Settings settings;
mutable sys::Mutex lock;
+ boost::shared_ptr<ConnectionObserver> observer; // Used by Backup and Primary
std::auto_ptr<Backup> backup;
std::auto_ptr<Primary> primary;
qmf::org::apache::qpid::ha::HaBroker* mgmtObject;
Url clientUrl, brokerUrl;
std::vector<Url> knownBrokers;
BrokerStatus status;
- boost::shared_ptr<ConnectionObserver> observer;
BrokerInfo brokerInfo;
Membership membership;
ReplicationTest replicationTest;
diff --git a/cpp/src/qpid/ha/Primary.cpp b/cpp/src/qpid/ha/Primary.cpp
index b315142e70..5eb6b292f7 100644
--- a/cpp/src/qpid/ha/Primary.cpp
+++ b/cpp/src/qpid/ha/Primary.cpp
@@ -97,7 +97,6 @@ Primary::Primary(HaBroker& hb, const BrokerInfo::Set& expect) :
}
Primary::~Primary() {
- haBroker.getObserver()->setObserver(boost::shared_ptr<broker::ConnectionObserver>());
haBroker.getBroker().getConfigurationObservers().remove(configurationObserver);
}