summaryrefslogtreecommitdiff
path: root/db/cloner.cpp
diff options
context:
space:
mode:
authorAaron Staple <aaron@10gen.com>2009-07-29 19:10:34 -0400
committerAaron Staple <aaron@10gen.com>2009-07-29 19:10:34 -0400
commit3a337ff121656c47ff665a5c18f9a9de349d505e (patch)
tree197a631bfd4c1328ec6ec90b2695a658bf10cb54 /db/cloner.cpp
parent5dcdc3a59caf6f503637c13902ed7f002d25328c (diff)
downloadmongo-3a337ff121656c47ff665a5c18f9a9de349d505e.tar.gz
repl support for fast rename plus test
Diffstat (limited to 'db/cloner.cpp')
-rw-r--r--db/cloner.cpp21
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;