From 5f6ce80e6e223b203a35ec00c8d3f2a64e23c715 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Wed, 12 May 2010 19:20:41 +0000 Subject: Remove incorrect optimization in Logger. Use of read-write lock causes a race in log. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@943641 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/include/qpid/log/Logger.h | 1 - cpp/src/qpid/log/Logger.cpp | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) (limited to 'cpp') diff --git a/cpp/include/qpid/log/Logger.h b/cpp/include/qpid/log/Logger.h index 80622365b1..d7da1f077a 100644 --- a/cpp/include/qpid/log/Logger.h +++ b/cpp/include/qpid/log/Logger.h @@ -98,7 +98,6 @@ class Logger : private boost::noncopyable { typedef std::set Statements; sys::Mutex lock; - sys::RWlock outputsLock; inline void enable_unlocked(Statement* s); Statements statements; diff --git a/cpp/src/qpid/log/Logger.cpp b/cpp/src/qpid/log/Logger.cpp index 65b4568e74..939e2502cc 100644 --- a/cpp/src/qpid/log/Logger.cpp +++ b/cpp/src/qpid/log/Logger.cpp @@ -90,21 +90,21 @@ void Logger::log(const Statement& s, const std::string& msg) { 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 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(); } -- cgit v1.2.1