diff options
author | Aaron Staple <aaron@10gen.com> | 2009-07-29 19:10:34 -0400 |
---|---|---|
committer | Aaron Staple <aaron@10gen.com> | 2009-07-29 19:10:34 -0400 |
commit | 3a337ff121656c47ff665a5c18f9a9de349d505e (patch) | |
tree | 197a631bfd4c1328ec6ec90b2695a658bf10cb54 /db/cloner.cpp | |
parent | 5dcdc3a59caf6f503637c13902ed7f002d25328c (diff) | |
download | mongo-3a337ff121656c47ff665a5c18f9a9de349d505e.tar.gz |
repl support for fast rename plus test
Diffstat (limited to 'db/cloner.cpp')
-rw-r--r-- | db/cloner.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/db/cloner.cpp b/db/cloner.cpp index 65b865ad617..0f86c2e7e50 100644 --- a/db/cloner.cpp +++ b/db/cloner.cpp @@ -551,6 +551,9 @@ namespace mongo { virtual bool slaveOk() { return false; } + virtual bool logTheOp() { + return true; // can't log steps when doing fast rename within a db, so always log the op rather than individual steps comprising it. + } virtual void help( stringstream &help ) const { help << " example: { renameCollection: foo.a, to: bar.b }"; } @@ -590,7 +593,7 @@ namespace mongo { spec.appendBool( "capped", true ); spec.append( "size", double( size ) ); } - if ( !userCreateNS( target.c_str(), spec.done(), errmsg, true ) ) + if ( !userCreateNS( target.c_str(), spec.done(), errmsg, false ) ) return false; auto_ptr< DBClientCursor > c; @@ -605,7 +608,7 @@ namespace mongo { break; } BSONObj o = c->next(); - theDataFileMgr.insertAndLog( target.c_str(), o ); + theDataFileMgr.insert( target.c_str(), o ); } char cl[256]; @@ -635,16 +638,12 @@ namespace mongo { } } BSONObj n = b.done(); - theDataFileMgr.insertAndLog( targetIndexes.c_str(), n ); + theDataFileMgr.insert( targetIndexes.c_str(), n ); } - - { - if ( !bridge.dropCollection( source ) ) { - errmsg = "failed to drop old name collection"; - return false; - } - } - return true; + + setClientTempNs( source.c_str() ); + dropCollection( source, errmsg, result ); + return true; } } cmdrenamecollection; |