Author: gsim
Date: Tue Apr  8 07:48:25 2008
New Revision: 645951

URL: http://svn.apache.org/viewvc?rev=645951&view=rev
Log:
QPID-903: changed read-write lock to mutex (currently recursive) to avoid 
deadlocking when adding bridge.


Modified:
    incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp?rev=645951&r1=645950&r2=645951&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp 
(original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp Tue 
Apr  8 07:48:25 2008
@@ -119,7 +119,7 @@
                                      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 @@
                                  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::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 @@
                                        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)

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h?rev=645951&r1=645950&r2=645951&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h 
(original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h Tue Apr 
 8 07:48:25 2008
@@ -136,7 +136,7 @@
     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;


Reply via email to