summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-04-08 14:48:25 +0000
committerGordon Sim <gsim@apache.org>2008-04-08 14:48:25 +0000
commitf18d1f7f3c4929752353c7beb1c7ae09e3ff3636 (patch)
treeb52ff63becc03933465d43a049572c81a2f7746d /cpp
parent21459845a498376ca2fe6d1666b108d53b6dda4f (diff)
downloadqpid-python-f18d1f7f3c4929752353c7beb1c7ae09e3ff3636.tar.gz
QPID-903: changed read-write lock to mutex (currently recursive) to avoid deadlocking when adding bridge.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@645951 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/qpid/management/ManagementAgent.cpp8
-rw-r--r--cpp/src/qpid/management/ManagementAgent.h2
2 files changed, 5 insertions, 5 deletions
diff --git a/cpp/src/qpid/management/ManagementAgent.cpp b/cpp/src/qpid/management/ManagementAgent.cpp
index d6a91ab2c1..ee0eb27bf6 100644
--- a/cpp/src/qpid/management/ManagementAgent.cpp
+++ b/cpp/src/qpid/management/ManagementAgent.cpp
@@ -119,7 +119,7 @@ void ManagementAgent::RegisterClass (string packageName,
uint8_t* md5Sum,
ManagementObject::writeSchemaCall_t schemaCall)
{
- RWlock::ScopedWlock writeLock (userLock);
+ Mutex::ScopedLock lock (userLock);
PackageMap::iterator pIter = FindOrAddPackage (packageName);
AddClassLocal (pIter, className, md5Sum, schemaCall);
}
@@ -128,7 +128,7 @@ void ManagementAgent::addObject (ManagementObject::shared_ptr object,
uint64_t /*persistenceId*/,
uint64_t /*idOffset*/)
{
- RWlock::ScopedWlock writeLock (userLock);
+ Mutex::ScopedLock lock (userLock);
uint64_t objectId;
// if (persistenceId == 0)
@@ -219,7 +219,7 @@ void ManagementAgent::SendBuffer (Buffer& buf,
void ManagementAgent::PeriodicProcessing (void)
{
#define BUFSIZE 65536
- RWlock::ScopedWlock writeLock (userLock);
+ Mutex::ScopedLock lock (userLock);
char msgChars[BUFSIZE];
uint32_t contentSize;
string routingKey;
@@ -289,7 +289,7 @@ void ManagementAgent::dispatchCommand (Deliverable& deliverable,
const string& routingKey,
const FieldTable* /*args*/)
{
- RWlock::ScopedRlock readLock (userLock);
+ Mutex::ScopedLock lock (userLock);
Message& msg = ((DeliverableMessage&) deliverable).getMessage ();
if (routingKey.compare (0, 13, "agent.method.") == 0)
diff --git a/cpp/src/qpid/management/ManagementAgent.h b/cpp/src/qpid/management/ManagementAgent.h
index ac665eb50d..bd86d4e773 100644
--- a/cpp/src/qpid/management/ManagementAgent.h
+++ b/cpp/src/qpid/management/ManagementAgent.h
@@ -136,7 +136,7 @@ class ManagementAgent
static bool enabled;
qpid::framing::Uuid uuid;
- qpid::sys::RWlock userLock;
+ qpid::sys::Mutex userLock;
broker::Timer timer;
broker::Exchange::shared_ptr mExchange;
broker::Exchange::shared_ptr dExchange;