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