From b26aa96c7715244d4d7c2cd6f27f2d0f90b184c9 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Sat, 27 Sep 2008 00:08:18 +0000 Subject: Added missing locks in cluster code. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@699535 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/cluster/Cluster.cpp | 1 + qpid/cpp/src/qpid/cluster/JoiningHandler.cpp | 3 ++- qpid/cpp/src/qpid/cluster/MemberHandler.cpp | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) (limited to 'qpid/cpp/src') 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(); } -- cgit v1.2.1