summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-09-27 00:08:18 +0000
committerAlan Conway <aconway@apache.org>2008-09-27 00:08:18 +0000
commitb26aa96c7715244d4d7c2cd6f27f2d0f90b184c9 (patch)
tree4dd8a6508e4901d815eeefb5c1e94e0f9ae722d5 /qpid/cpp/src
parent9809badd6486af7697767b80f123885eb1892e4a (diff)
downloadqpid-python-b26aa96c7715244d4d7c2cd6f27f2d0f90b184c9.tar.gz
Added missing locks in cluster code.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@699535 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/cluster/Cluster.cpp1
-rw-r--r--qpid/cpp/src/qpid/cluster/JoiningHandler.cpp3
-rw-r--r--qpid/cpp/src/qpid/cluster/MemberHandler.cpp1
3 files changed, 4 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/cluster/Cluster.cpp b/qpid/cpp/src/qpid/cluster/Cluster.cpp
index 19f4318a9c..7feee4ce14 100644
--- a/qpid/cpp/src/qpid/cluster/Cluster.cpp
+++ b/qpid/cpp/src/qpid/cluster/Cluster.cpp
@@ -282,6 +282,7 @@ void Cluster::stall() {
}
void Cluster::ready() {
+ // Called with lock held
QPID_LOG(debug, self << " ready at " << url);
unstall();
mcastControl(ClusterReadyBody(ProtocolVersion(), url.str()), 0);
diff --git a/qpid/cpp/src/qpid/cluster/JoiningHandler.cpp b/qpid/cpp/src/qpid/cluster/JoiningHandler.cpp
index 6838313263..dbee0ece61 100644
--- a/qpid/cpp/src/qpid/cluster/JoiningHandler.cpp
+++ b/qpid/cpp/src/qpid/cluster/JoiningHandler.cpp
@@ -47,6 +47,7 @@ void JoiningHandler::configChange(
}
void JoiningHandler::deliver(Event& e) {
+ Mutex::ScopedLock l(cluster.lock);
// Discard connection events unless we are stalled to receive a dump.
if (state == STALLED)
cluster.connectionEventQueue.push(e);
@@ -60,7 +61,7 @@ void JoiningHandler::update(const MemberId&, const framing::FieldTable& members,
checkDumpRequest();
}
-void JoiningHandler::checkDumpRequest() {
+void JoiningHandler::checkDumpRequest() { // Call with lock held
if (state == START && !cluster.map.dumper) {
cluster.broker.getPort(); // ensure the broker is listening.
state = DUMP_REQUESTED;
diff --git a/qpid/cpp/src/qpid/cluster/MemberHandler.cpp b/qpid/cpp/src/qpid/cluster/MemberHandler.cpp
index 99e7b7d683..69fe2eec0b 100644
--- a/qpid/cpp/src/qpid/cluster/MemberHandler.cpp
+++ b/qpid/cpp/src/qpid/cluster/MemberHandler.cpp
@@ -74,6 +74,7 @@ void MemberHandler::dumpRequest(const MemberId& dumpee, const std::string& urlSt
}
void MemberHandler::ready(const MemberId& id, const std::string& urlStr) {
+ Mutex::ScopedLock l(cluster.lock);
if (cluster.map.ready(id, Url(urlStr)))
cluster.updateMemberStats();
}