diff options
-rw-r--r-- | qpid/cpp/src/qpid/ha/HaBroker.cpp | 4 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/ha/HaBroker.h | 2 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/ha/Membership.cpp | 17 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/ha/Membership.h | 13 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/ha/TxReplicator.cpp | 2 |
5 files changed, 11 insertions, 27 deletions
diff --git a/qpid/cpp/src/qpid/ha/HaBroker.cpp b/qpid/cpp/src/qpid/ha/HaBroker.cpp index 21e41c0f8c..61561b3af6 100644 --- a/qpid/cpp/src/qpid/ha/HaBroker.cpp +++ b/qpid/cpp/src/qpid/ha/HaBroker.cpp @@ -95,7 +95,7 @@ bool isNone(const std::string& x) { return x.empty() || x == NONE; } void HaBroker::initialize() { if (settings.cluster) { membership.setStatus(JOINING); - QPID_LOG(notice, "Initializing HA broker: " << membership.getInfo()); + QPID_LOG(notice, "Initializing HA broker: " << membership.getSelf()); } // Set up the management object. @@ -214,7 +214,7 @@ BrokerStatus HaBroker::getStatus() const { void HaBroker::setAddress(const Address& a) { QPID_LOG(info, role->getLogPrefix() << "Set self address to: " << a); - membership.setAddress(a); + membership.setSelfAddress(a); } boost::shared_ptr<QueueReplicator> HaBroker::findQueueReplicator(const std::string& queueName) { diff --git a/qpid/cpp/src/qpid/ha/HaBroker.h b/qpid/cpp/src/qpid/ha/HaBroker.h index 1a42111cea..d10014846c 100644 --- a/qpid/cpp/src/qpid/ha/HaBroker.h +++ b/qpid/cpp/src/qpid/ha/HaBroker.h @@ -92,7 +92,7 @@ class HaBroker : public management::Manageable BrokerStatus getStatus() const; boost::shared_ptr<ConnectionObserver> getObserver() { return observer; } - BrokerInfo getBrokerInfo() const { return membership.getInfo(); } + BrokerInfo getBrokerInfo() const { return membership.getSelf(); } Membership& getMembership() { return membership; } types::Uuid getSystemId() const { return systemId; } diff --git a/qpid/cpp/src/qpid/ha/Membership.cpp b/qpid/cpp/src/qpid/ha/Membership.cpp index ddb603ca14..2f8ef1da97 100644 --- a/qpid/cpp/src/qpid/ha/Membership.cpp +++ b/qpid/cpp/src/qpid/ha/Membership.cpp @@ -144,20 +144,9 @@ bool checkTransition(BrokerStatus from, BrokerStatus to) { } } // namespace -void Membership::addCallback(UpdateCallback cb) { - Mutex::ScopedLock l(lock); - callbacks.push_back(cb); - cb(brokers); // Give an initial update. -} - void Membership::update(Mutex::ScopedLock& l) { QPID_LOG(info, "Membership: " << brokers); - - // Call callbacks - for_each(callbacks.begin(), callbacks.end(), - boost::bind<void>(&UpdateCallback::operator(), _1, boost::cref(brokers))); - - // Update managment and send update event. +// Update managment and send update event. BrokerStatus newStatus = getStatus(l); Variant::List brokerList = asList(l); if (mgmtObject) { @@ -216,14 +205,14 @@ BrokerStatus Membership::getStatus(sys::Mutex::ScopedLock&) const { return i->second.getStatus(); } -BrokerInfo Membership::getInfo() const { +BrokerInfo Membership::getSelf() const { Mutex::ScopedLock l(lock); BrokerInfo::Map::const_iterator i = brokers.find(self); assert(i != brokers.end()); return i->second; } -void Membership::setAddress(const Address& a) { +void Membership::setSelfAddress(const Address& a) { Mutex::ScopedLock l(lock); brokers[self].setAddress(a); update(l); diff --git a/qpid/cpp/src/qpid/ha/Membership.h b/qpid/cpp/src/qpid/ha/Membership.h index f8b7f7f8ad..5b2b72e2fc 100644 --- a/qpid/cpp/src/qpid/ha/Membership.h +++ b/qpid/cpp/src/qpid/ha/Membership.h @@ -26,6 +26,7 @@ #include "types.h" #include "qpid/log/Statement.h" #include "qpid/sys/Mutex.h" +#include "qpid/sys/Time.h" #include "qpid/types/Variant.h" #include <boost/function.hpp> #include <set> @@ -61,11 +62,6 @@ class Membership void setMgmtObject(boost::shared_ptr<qmf::org::apache::qpid::ha::HaBroker>); - /** Call callback when membership changes. - * NOTE: called with Membership lock held. - */ - typedef boost::function<void(const BrokerInfo::Map&)> UpdateCallback; - void addCallback(UpdateCallback); void clear(); ///< Clear all but self. void add(const BrokerInfo& b); void remove(const types::Uuid& id); @@ -82,11 +78,11 @@ class Membership bool get(const types::Uuid& id, BrokerInfo& result) const; - types::Uuid getSelf() const { return self; } - BrokerInfo getInfo() const; + BrokerInfo getSelf() const; BrokerStatus getStatus() const; void setStatus(BrokerStatus s); - void setAddress(const Address&); + + void setSelfAddress(const Address&); private: void update(sys::Mutex::ScopedLock&); @@ -99,7 +95,6 @@ class Membership const types::Uuid self; BrokerInfo::Map brokers; BrokerStatus oldStatus; - std::vector<UpdateCallback> callbacks; }; }} // namespace qpid::ha diff --git a/qpid/cpp/src/qpid/ha/TxReplicator.cpp b/qpid/cpp/src/qpid/ha/TxReplicator.cpp index dcc5376d97..0ec0643491 100644 --- a/qpid/cpp/src/qpid/ha/TxReplicator.cpp +++ b/qpid/cpp/src/qpid/ha/TxReplicator.cpp @@ -219,7 +219,7 @@ void TxReplicator::members(const string& data, sys::Mutex::ScopedLock& l) { TxMembersEvent e; decodeStr(data, e); QPID_LOG(debug, logPrefix << "Members: " << e.members); - if (!e.members.count(haBroker.getMembership().getSelf())) { + if (!e.members.count(haBroker.getMembership().getSelf().getSystemId())) { QPID_LOG(debug, logPrefix << "Not a member of transaction, terminating"); end(l); } |