diff options
author | samantharitter <samantha.ritter@10gen.com> | 2017-05-25 17:51:17 -0400 |
---|---|---|
committer | samantharitter <samantha.ritter@10gen.com> | 2017-05-30 11:22:57 -0400 |
commit | fad590916a30ff34dc8c3b37afcfffa2c4e5c8bc (patch) | |
tree | c57610dde742c1e17316b756c9ccb4215ce58db6 /src/mongo/logger/logstream_builder.cpp | |
parent | 6a11fc05770306b5d660b21f339cba110d6d67d4 (diff) | |
download | mongo-fad590916a30ff34dc8c3b37afcfffa2c4e5c8bc.tar.gz |
SERVER-29152 Do not cache logging ostream in threadlocal when in other thread-specific contexts
Diffstat (limited to 'src/mongo/logger/logstream_builder.cpp')
-rw-r--r-- | src/mongo/logger/logstream_builder.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/mongo/logger/logstream_builder.cpp b/src/mongo/logger/logstream_builder.cpp index af055be3120..2378558bd4a 100644 --- a/src/mongo/logger/logstream_builder.cpp +++ b/src/mongo/logger/logstream_builder.cpp @@ -80,12 +80,14 @@ LogstreamBuilder::LogstreamBuilder(MessageLogDomain* domain, LogstreamBuilder::LogstreamBuilder(MessageLogDomain* domain, StringData contextName, LogSeverity severity, - LogComponent component) + LogComponent component, + bool shouldCache) : _domain(domain), _contextName(contextName.toString()), _severity(std::move(severity)), _component(std::move(component)), - _tee(nullptr) {} + _tee(nullptr), + _shouldCache(shouldCache) {} LogstreamBuilder::LogstreamBuilder(logger::MessageLogDomain* domain, StringData contextName, @@ -110,7 +112,8 @@ LogstreamBuilder::~LogstreamBuilder() { _tee->write(_os->str()); } _os->str(""); - if (isThreadOstreamCacheInitialized && !threadOstreamCache.getMake()->get()) { + if (_shouldCache && isThreadOstreamCacheInitialized && + !threadOstreamCache.getMake()->get()) { *threadOstreamCache.get() = std::move(_os); } } @@ -124,7 +127,8 @@ void LogstreamBuilder::operator<<(Tee* tee) { void LogstreamBuilder::makeStream() { if (!_os) { - if (isThreadOstreamCacheInitialized && threadOstreamCache.getMake()->get()) { + if (_shouldCache && isThreadOstreamCacheInitialized && + threadOstreamCache.getMake()->get()) { _os = std::move(*threadOstreamCache.get()); } else { _os = stdx::make_unique<std::ostringstream>(); |