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/dbcommands_generic.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/dbcommands_generic.cpp')
-rw-r--r-- | src/mongo/db/dbcommands_generic.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/mongo/db/dbcommands_generic.cpp b/src/mongo/db/dbcommands_generic.cpp index 1a78890a971..22666d7a5c5 100644 --- a/src/mongo/db/dbcommands_generic.cpp +++ b/src/mongo/db/dbcommands_generic.cpp @@ -354,20 +354,18 @@ namespace mongo { result.appendArray( "names" , arr.arr() ); } else { - RamLog* rl = RamLog::get( p ); - if ( ! rl ) { + RamLog* ramlog = RamLog::getIfExists(p); + if ( ! ramlog ) { errmsg = str::stream() << "no RamLog named: " << p; return false; } + RamLog::LineIterator rl(ramlog); - result.appendNumber( "totalLinesWritten", rl->getTotalLinesWritten() ); - - vector<const char*> lines; - rl->get( lines ); + result.appendNumber( "totalLinesWritten", rl.getTotalLinesWritten() ); BSONArrayBuilder arr( result.subarrayStart( "log" ) ); - for ( unsigned i=0; i<lines.size(); i++ ) - arr.append( lines[i] ); + while (rl.more()) + arr.append(rl.next()); arr.done(); } return true; |