0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 09:32:32 +01:00
mongodb/jstests/sharding/delete_during_migrate.js

47 lines
1.6 KiB
JavaScript

// Test migrating a big chunk while deletions are happening within that chunk.
// Test is slightly non-deterministic, since removes could happen before migrate
// starts. Protect against that by making chunk very large.
// start up a new sharded cluster
var st = new ShardingTest({ shards : 2, mongos : 1 });
// stop balancer since we want manual control for this
st.stopBalancer();
var dbname = "testDB";
var coll = "foo";
var ns = dbname + "." + coll;
var s = st.s0;
var t = s.getDB( dbname ).getCollection( coll );
s.adminCommand({ enablesharding: dbname });
st.ensurePrimaryShard(dbname, 'shard0001');
// Create fresh collection with lots of docs
t.drop();
var bulk = t.initializeUnorderedBulkOp();
for (var i = 0; i < 200000; i++) {
bulk.insert({ a: i });
}
assert.writeOK(bulk.execute());
// enable sharding of the collection. Only 1 chunk.
t.ensureIndex( { a : 1 } );
s.adminCommand( { shardcollection : ns , key: { a : 1 } } );
// start a parallel shell that deletes things
startMongoProgramNoConnect( "mongo" ,
"--host" , getHostName() ,
"--port" , st.s0.port ,
"--eval" , "db." + coll + ".remove({});" ,
dbname );
// migrate while deletions are happening
var moveResult = s.adminCommand( { moveChunk : ns ,
find : { a : 1 } ,
to : st.getOther( st.getServer( dbname ) ).name } );
// check if migration worked
assert( moveResult.ok , "migration didn't work while doing deletes" );
st.stop();