// Tests that an empty shard can't be the cause of a chunk reset var st = new ShardingTest({ shards : 2, mongos : 2 }) // Don't balance since we're manually moving chunks st.stopBalancer() var coll = st.s.getCollection( jsTestName() + ".coll" ) for( var i = -10; i < 10; i++ ) coll.insert({ _id : i }) st.shardColl( coll, { _id : 1 }, { _id : 0 } ) jsTestLog( "Sharded setup complete" ) st.printShardingStatus() jsTestLog( "Setting initial versions for each mongos..." ) coll.find().itcount() var collB = st.s1.getCollection( "" + coll ) collB.find().itcount() jsTestLog( "Migrating via first mongos..." ) var fullShard = st.getShard( coll, { _id : 1 } ) var emptyShard = st.getShard( coll, { _id : -1 } ) var admin = st.s.getDB( "admin" ) assert.soon( function () { var result = admin.runCommand( { moveChunk: "" + coll, find: { _id: -1 }, to: fullShard.shardName, _waitForDelete: true } ); jsTestLog('moveChunk result = ' + tojson(result)); return result.ok; }, "Setup FAILURE: Unable to move chunk from " + emptyShard.shardName + " to " + fullShard.shardName ); jsTestLog( "Resetting shard version via first mongos..." ) coll.find().itcount() jsTestLog( "Making sure we don't insert into the wrong shard..." ) collB.insert({ _id : -11 }) var emptyColl = emptyShard.getCollection( "" + coll ) print( emptyColl ) print( emptyShard ) print( emptyShard.shardName ) st.printShardingStatus() assert.eq( 0, emptyColl.find().itcount() ) jsTestLog("DONE!"); st.stop();