diff options
author | Andy Schwerin <schwerin@10gen.com> | 2013-07-12 18:05:35 -0400 |
---|---|---|
committer | Andy Schwerin <schwerin@10gen.com> | 2013-07-12 18:08:19 -0400 |
commit | 6e3ccc5649d16fd9940bc8fd1b490556d5767bf8 (patch) | |
tree | 6485289521af46ae932edb12a54c39737bea03f4 /src/mongo/db/commands/server_status.cpp | |
parent | 15333b2a308fd26c28448810780b06407328a795 (diff) | |
download | mongo-6e3ccc5649d16fd9940bc8fd1b490556d5767bf8.tar.gz |
SERVER-10172 Refactor RamLog to make it thread-safe.
Also prevent accidental creation of duplicate ramlogs of the same name.
Diffstat (limited to 'src/mongo/db/commands/server_status.cpp')
-rw-r--r-- | src/mongo/db/commands/server_status.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/mongo/db/commands/server_status.cpp b/src/mongo/db/commands/server_status.cpp index 689dac9aac2..2059ddeb551 100644 --- a/src/mongo/db/commands/server_status.cpp +++ b/src/mongo/db/commands/server_status.cpp @@ -141,20 +141,16 @@ namespace mongo { // --- some hard coded global things hard to pull out { - RamLog* rl = RamLog::get( "warnings" ); - massert(15880, "no ram log for warnings?" , rl); - - if (rl->lastWrite() >= time(0)-(10*60)){ // only show warnings from last 10 minutes - vector<const char*> lines; - rl->get( lines ); - - BSONArrayBuilder arr( result.subarrayStart( "warnings" ) ); - for ( unsigned i=std::max(0,(int)lines.size()-10); i<lines.size(); i++ ) - arr.append( lines[i] ); + RamLog::LineIterator rl(RamLog::get("warnings")); + if (rl.lastWrite() >= time(0)-(10*60)){ // only show warnings from last 10 minutes + BSONArrayBuilder arr(result.subarrayStart("warnings")); + while (rl.more()) { + arr.append(rl.next()); + } arr.done(); } } - + timeBuilder.appendNumber( "at end" , Listener::getElapsedTimeMillis() - start ); if ( Listener::getElapsedTimeMillis() - start > 1000 ) { BSONObj t = timeBuilder.obj(); |