summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/cluster/MemberHandler.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-09-25 12:30:14 +0000
committerAlan Conway <aconway@apache.org>2008-09-25 12:30:14 +0000
commit48f511ecb4a772f2cf6048f9b5ddbf9a4e3f9587 (patch)
tree7b75738562cf97befd775868670c336995ba0cd1 /cpp/src/qpid/cluster/MemberHandler.cpp
parentcd78f5c69d70b43e5bf82fa9125eb876bc3bbc42 (diff)
downloadqpid-python-48f511ecb4a772f2cf6048f9b5ddbf9a4e3f9587.tar.gz
Enabled management, add cluster shutdown command.
Remove dead Handler methods in Cluster. Fixed SessionException handling in broker, was throwing some SessionExceptions as "unknown exception" git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@698945 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/cluster/MemberHandler.cpp')
-rw-r--r--cpp/src/qpid/cluster/MemberHandler.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/cpp/src/qpid/cluster/MemberHandler.cpp b/cpp/src/qpid/cluster/MemberHandler.cpp
index 0f600a4995..53a1d13a4d 100644
--- a/cpp/src/qpid/cluster/MemberHandler.cpp
+++ b/cpp/src/qpid/cluster/MemberHandler.cpp
@@ -43,6 +43,7 @@ void MemberHandler::configChange(
cpg_address */*left*/, int /*nLeft*/,
cpg_address */*joined*/, int nJoined)
{
+ // FIXME aconway 2008-09-24: Called with lock held - volatile
if (nJoined && cluster.map.sendUpdate(cluster.self)) // New members need update
cluster.mcastControl(cluster.map.toControl(), 0);
}
@@ -51,9 +52,13 @@ void MemberHandler::deliver(Event& e) {
cluster.connectionEventQueue.push(e);
}
-void MemberHandler::update(const MemberId&, const framing::FieldTable& , uint64_t) {}
+void MemberHandler::update(const MemberId&, const framing::FieldTable& , uint64_t) {
+ Mutex::ScopedLock l(cluster.lock);
+ cluster.updateMemberStats();
+}
void MemberHandler::dumpRequest(const MemberId& dumpee, const std::string& urlStr) {
+ Mutex::ScopedLock l(cluster.lock);
if (cluster.map.dumper) return; // dump in progress, ignore request.
cluster.map.dumper = cluster.map.first();
@@ -76,17 +81,18 @@ void MemberHandler::ready(const MemberId& id, const std::string& url) {
void MemberHandler::dumpSent() {
- QPID_LOG(debug, "Finished sending state dump.");
Mutex::ScopedLock l(cluster.lock);
+ QPID_LOG(debug, "Finished sending state dump.");
cluster.ready();
}
void MemberHandler::dumpError(const std::exception& e) {
- QPID_LOG(error, "Error sending state dump from " << cluster.self << ": " << e.what());
+ QPID_LOG(error, cluster.self << " error sending state dump: " << e.what());
dumpSent();
}
void MemberHandler::insert(const boost::intrusive_ptr<Connection>& c) {
+ Mutex::ScopedLock l(cluster.lock);
if (c->isCatchUp()) // Not allowed in member mode
c->getBrokerConnection().close(execution::ERROR_CODE_ILLEGAL_STATE, "Not in catch-up mode.");
else
@@ -94,6 +100,7 @@ void MemberHandler::insert(const boost::intrusive_ptr<Connection>& c) {
}
void MemberHandler::catchUpClosed(const boost::intrusive_ptr<Connection>& c) {
+ Mutex::ScopedLock l(cluster.lock);
QPID_LOG(warning, "Catch-up connection " << c << " closed in member mode");
assert(0);
}