Skip to content

Commit 9191c9d

Browse files
pcaspersjenkins
authored andcommitted
QPR-12129 fix synchronization
1 parent a3d7a80 commit 9191c9d

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

OREData/ored/utilities/log.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,10 @@ void Log::registerIndependentLogger(const boost::shared_ptr<IndependentLogger>&
286286
independentLoggers_[logger->name()] = logger;
287287
}
288288

289-
const bool Log::hasLogger(const string& name) const { return loggers_.find(name) != loggers_.end(); }
289+
const bool Log::hasLogger(const string& name) const {
290+
boost::shared_lock<boost::shared_mutex> lock(mutex_);
291+
return loggers_.find(name) != loggers_.end();
292+
}
290293

291294
boost::shared_ptr<Logger>& Log::logger(const string& name) {
292295
boost::shared_lock<boost::shared_mutex> lock(mutex_);
@@ -295,6 +298,7 @@ boost::shared_ptr<Logger>& Log::logger(const string& name) {
295298
}
296299

297300
const bool Log::hasIndependentLogger(const string& name) const {
301+
boost::shared_lock<boost::shared_mutex> lock(mutex_);
298302
return independentLoggers_.find(name) != independentLoggers_.end();
299303
}
300304

@@ -333,6 +337,7 @@ void Log::removeAllLoggers() {
333337
}
334338

335339
string Log::source(const char* filename, int lineNo) {
340+
boost::shared_lock<boost::shared_mutex> lock(mutex_);
336341
string filepath;
337342
if (rootPath_.empty()) {
338343
filepath = filename;
@@ -357,17 +362,21 @@ string Log::source(const char* filename, int lineNo) {
357362
}
358363

359364
void Log::addExcludeFilter(const string& key, const std::function<bool(const std::string&)> func) {
365+
boost::unique_lock<boost::shared_mutex> lock(mutex_);
360366
excludeFilters_[key] = func;
361367
}
362368

363-
void Log::removeExcludeFilter(const string& key) { excludeFilters_.erase(key); }
369+
void Log::removeExcludeFilter(const string& key) {
370+
boost::unique_lock<boost::shared_mutex> lock(mutex_);
371+
excludeFilters_.erase(key);
372+
}
364373

365374
bool Log::checkExcludeFilters(const std::string& msg) {
375+
boost::shared_lock<boost::shared_mutex> lock(mutex_);
366376
for (const auto& f : excludeFilters_) {
367377
if (f.second(msg))
368378
return true;
369379
}
370-
371380
return false;
372381
}
373382

OREData/ored/utilities/log.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,15 +460,15 @@ class Log : public QuantLib::Singleton<Log, std::integral_constant<bool, true>>
460460
mask_ = mask;
461461
}
462462
const boost::filesystem::path& rootPath() {
463-
boost::unique_lock<boost::shared_mutex> lock(mutex());
463+
boost::shared_lock<boost::shared_mutex> lock(mutex());
464464
return rootPath_;
465465
}
466466
void setRootPath(const boost::filesystem::path& pth) {
467467
boost::unique_lock<boost::shared_mutex> lock(mutex());
468468
rootPath_ = pth;
469469
}
470470
int maxLen() {
471-
boost::unique_lock<boost::shared_mutex> lock(mutex());
471+
boost::shared_lock<boost::shared_mutex> lock(mutex());
472472
return maxLen_;
473473
}
474474
void setMaxLen(const int n) {

0 commit comments

Comments
 (0)