chunksize = 25 s = new ShardingTest( "migrate_cursor1" , 2 , 1 , 1 , { chunksize : chunksize } ); s.config.settings.update( { _id: "balancer" }, { $set : { stopped: true } } , true ); s.adminCommand( { enablesharding : "test" } ); db = s.getDB( "test" ) t = db.foo bigString = "" stringSize = 1024; while ( bigString.length < stringSize ) bigString += "asdasdas"; stringSize = bigString.length docsPerChunk = Math.ceil( ( chunksize * 1024 * 1024 ) / ( stringSize - 12 ) ) numChunks = 5 numDocs = 20 * docsPerChunk print( "stringSize: " + stringSize + " docsPerChunk: " + docsPerChunk + " numDocs: " + numDocs ) for ( i=0; i 0; } , "XXX" , 30000 , 1 ) print( "itcount: " + x.itcount() ) x = null; for ( i=0; i<5; i++ ) gc() print( "cursor should be gone" ) join(); assert.soon( function(){ print( "Waiting for migrate cleanup to complete..." ); return t.count() == t.find().itcount(); }) //assert.soon( function(){ return numDocs == t.count(); } , "at end 1" ) sleep( 5000 ) assert.eq( numDocs , t.count() , "at end 2" ) assert.eq( numDocs , primary.count() + secondary.count() , "at end 3" ) s.stop()