summaryrefslogtreecommitdiff
path: root/src/mongo/db/dbcommands_generic.cpp
diff options
context:
space:
mode:
authorAndy Schwerin <schwerin@10gen.com>2013-07-12 18:05:35 -0400
committerAndy Schwerin <schwerin@10gen.com>2013-07-12 18:08:19 -0400
commit6e3ccc5649d16fd9940bc8fd1b490556d5767bf8 (patch)
tree6485289521af46ae932edb12a54c39737bea03f4 /src/mongo/db/dbcommands_generic.cpp
parent15333b2a308fd26c28448810780b06407328a795 (diff)
downloadmongo-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.cpp14
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;