summaryrefslogtreecommitdiff
path: root/src/mongo/logger
diff options
context:
space:
mode:
authorSpencer T Brody <spencer@mongodb.com>2017-03-17 13:57:23 -0400
committerSpencer T Brody <spencer@mongodb.com>2017-03-20 15:20:28 -0400
commit07ddacf92a2c53bd5a02878917ab8ebb35874413 (patch)
tree1b2692ec107fae6f6827b4c5b67398ff9481ec2e /src/mongo/logger
parent1f607d93a8554442572337e02a85d8ec3df74b42 (diff)
downloadmongo-07ddacf92a2c53bd5a02878917ab8ebb35874413.tar.gz
SERVER-28380 Clear ramlog before looking for stopReplProducer failpoint log message
Diffstat (limited to 'src/mongo/logger')
-rw-r--r--src/mongo/logger/ramlog.cpp13
-rw-r--r--src/mongo/logger/ramlog.h5
2 files changed, 16 insertions, 2 deletions
diff --git a/src/mongo/logger/ramlog.cpp b/src/mongo/logger/ramlog.cpp
index 42742f32bcc..e0190577f71 100644
--- a/src/mongo/logger/ramlog.cpp
+++ b/src/mongo/logger/ramlog.cpp
@@ -50,8 +50,7 @@ RM* _named = NULL;
} // namespace
RamLog::RamLog(const std::string& name) : _name(name), _totalLinesWritten(0), _lastWrite(0) {
- h = 0;
- n = 0;
+ clear();
for (int i = 0; i < N; i++)
lines[i][C - 1] = 0;
}
@@ -84,6 +83,16 @@ void RamLog::write(const std::string& str) {
h = (h + 1) % N;
}
+void RamLog::clear() {
+ stdx::lock_guard<stdx::mutex> lk(_mutex);
+ _totalLinesWritten = 0;
+ _lastWrite = 0;
+ h = 0;
+ n = 0;
+ for (int i = 0; i < N; i++)
+ lines[i][0] = 0;
+}
+
time_t RamLog::LineIterator::lastWrite() {
return _ramlog->_lastWrite;
}
diff --git a/src/mongo/logger/ramlog.h b/src/mongo/logger/ramlog.h
index 54901948f74..902471c4563 100644
--- a/src/mongo/logger/ramlog.h
+++ b/src/mongo/logger/ramlog.h
@@ -93,6 +93,11 @@ public:
*/
void write(const std::string& str);
+ /**
+ * Empties out the RamLog.
+ */
+ void clear();
+
/**
* Writes an HTML representation of the log to "s".