You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2010/05/12 21:20:41 UTC

svn commit: r943641 - in /qpid/trunk/qpid/cpp: include/qpid/log/Logger.h src/qpid/log/Logger.cpp

Author: aconway
Date: Wed May 12 19:20:41 2010
New Revision: 943641

URL: http://svn.apache.org/viewvc?rev=943641&view=rev
Log:
Remove incorrect optimization in Logger.

Use of read-write lock causes a race in log.

Modified:
    qpid/trunk/qpid/cpp/include/qpid/log/Logger.h
    qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp

Modified: qpid/trunk/qpid/cpp/include/qpid/log/Logger.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/log/Logger.h?rev=943641&r1=943640&r2=943641&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/log/Logger.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/log/Logger.h Wed May 12 19:20:41 2010
@@ -98,7 +98,6 @@ class Logger : private boost::noncopyabl
     typedef std::set<Statement*> Statements;
 
     sys::Mutex lock;
-    sys::RWlock outputsLock;
     inline void enable_unlocked(Statement* s);
 
     Statements statements;

Modified: qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp?rev=943641&r1=943640&r2=943641&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp Wed May 12 19:20:41 2010
@@ -90,21 +90,21 @@ void Logger::log(const Statement& s, con
     os << msg << endl;
     std::string formatted=os.str();
     {
-        sys::RWlock::ScopedRlock l(outputsLock);
+        ScopedLock l(lock);
         std::for_each(outputs.begin(), outputs.end(),
                       boost::bind(&Output::log, _1, s, formatted));
     }
 }
 
 void Logger::output(std::auto_ptr<Output> out) {
-    sys::RWlock::ScopedWlock l(outputsLock);
+    ScopedLock l(lock);
     outputs.push_back(out.release());
 }
 
 void Logger::clear() {
     select(Selector());         // locked
     format(0);                  // locked
-    sys::RWlock::ScopedWlock l(outputsLock);
+    ScopedLock l(lock);
     outputs.clear();
 }
 



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org