diff options
95 files changed, 159 insertions, 43 deletions
diff --git a/jstests/aggregation/bugs/server6118.js b/jstests/aggregation/bugs/server6118.js index 56e23af8e5a..2f2e7599ef8 100644 --- a/jstests/aggregation/bugs/server6118.js +++ b/jstests/aggregation/bugs/server6118.js @@ -3,6 +3,7 @@ // Set up a sharding test. s = new ShardingTest( "aggregation_sort1", 2, 0, 2 ); s.adminCommand( { enablesharding:"test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection:"test.data", key:{ _id:1 } } ); // Test does it's own balancing. diff --git a/jstests/aggregation/bugs/server6179.js b/jstests/aggregation/bugs/server6179.js index f5cf6259c4f..260fa38c983 100644 --- a/jstests/aggregation/bugs/server6179.js +++ b/jstests/aggregation/bugs/server6179.js @@ -3,6 +3,7 @@ // Set up a sharding test. s = new ShardingTest( "aggregation_multiple_group", 2, 0, 2 ); s.adminCommand( { enablesharding:"test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection:"test.data", key:{ _id:1 } } ); s.stopBalancer() diff --git a/jstests/aggregation/bugs/server7781.js b/jstests/aggregation/bugs/server7781.js index e22ae786803..81729e4654a 100644 --- a/jstests/aggregation/bugs/server7781.js +++ b/jstests/aggregation/bugs/server7781.js @@ -123,7 +123,7 @@ test(db, false, '2dsphere'); var sharded = new ShardingTest({shards: 3, verbose: 0, mongos: 1}); sharded.stopBalancer(); sharded.adminCommand( { enablesharding : "test" } ); - +sharded.ensurePrimaryShard('test', 'shard0001'); test(sharded.getDB('test'), true, '2d'); test(sharded.getDB('test'), true, '2dsphere'); diff --git a/jstests/aggregation/testshard1.js b/jstests/aggregation/testshard1.js index 91468ffea24..6bf66fc23cb 100644 --- a/jstests/aggregation/testshard1.js +++ b/jstests/aggregation/testshard1.js @@ -28,6 +28,7 @@ jsTestLog("Setting up sharded cluster"); shardedAggTest.adminCommand( { enablesharding : "aggShard" } ); db = shardedAggTest.getDB( "aggShard" ); assert.commandWorked(db.adminCommand({setParameter: 1, logComponentVerbosity: { network: 0 }})); +shardedAggTest.ensurePrimaryShard('aggShard', 'shard0000'); /* make sure its cleaned up */ db.ts1.drop(); diff --git a/jstests/gle/1_sharding_gle_basics_passthrough.js b/jstests/gle/1_sharding_gle_basics_passthrough.js index dad1f5ac5a2..6b9f51c59cc 100644 --- a/jstests/gle/1_sharding_gle_basics_passthrough.js +++ b/jstests/gle/1_sharding_gle_basics_passthrough.js @@ -8,7 +8,7 @@ var passST = new ShardingTest({ name : "passST", shards : 2, mongos : 1 }); var passMongos = passST.s0; assert.commandWorked(passMongos.getDB("admin").runCommand({ enableSharding : "testSharded" })); - + passST.ensurePrimaryShard('testSharded', 'shard0001'); // Remember the global 'db' var var lastDB = db; @@ -46,4 +46,4 @@ db = lastDB; passST.stop(); -}());
\ No newline at end of file +}()); diff --git a/jstests/multiVersion/balancer_multiVersion_detect.js b/jstests/multiVersion/balancer_multiVersion_detect.js index 25bf8d27b12..c68072b3e80 100644 --- a/jstests/multiVersion/balancer_multiVersion_detect.js +++ b/jstests/multiVersion/balancer_multiVersion_detect.js @@ -20,6 +20,7 @@ var admin = mongos.getDB("admin"); var coll = mongos.getCollection("foo.bar"); printjson(admin.runCommand({ enableSharding : coll.getDB() + "" })); +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); printjson(admin.runCommand({ shardCollection : coll + "", key : { _id : 1 } })); assert.soon( function() { diff --git a/jstests/multiVersion/explain.js b/jstests/multiVersion/explain.js index 2579c12f164..07d01204f99 100644 --- a/jstests/multiVersion/explain.js +++ b/jstests/multiVersion/explain.js @@ -50,6 +50,7 @@ coll = testDb.standalone; coll.drop(); assert.commandWorked(testDb.adminCommand({enableSharding: testDb.getName()})); +st.ensurePrimaryShard(testDb.getName(), 'shard0001'); testDb.adminCommand({shardCollection: coll.getFullName(), key: {_id: 1}}); coll.insert({_id: 1, a: 1}); @@ -94,6 +95,7 @@ coll = testDb.standalone; coll.drop(); assert.commandWorked(testDb.adminCommand({enableSharding: testDb.getName()})); +st.ensurePrimaryShard(testDb.getName(), 'shard0001'); testDb.adminCommand({shardCollection: coll.getFullName(), key: {_id: 1}}); coll.insert({_id: 1, a: 1}); @@ -138,8 +140,7 @@ coll = testDb.standalone; coll.drop(); assert.commandWorked(testDb.adminCommand({enableSharding: testDb.getName()})); -var res = testDb.adminCommand({movePrimary: testDb.getName(), to: 'shard0001'}); -assert(res.ok || res.errmsg == "it is already the primary"); +st.ensurePrimaryShard(testDb.getName(), 'shard0001'); testDb.adminCommand({shardCollection: coll.getFullName(), key: {_id: 1}}); // Disable the balancer and pre-split in order to ensure chunks on both shards. diff --git a/jstests/noPassthroughWithMongod/balance_repl.js b/jstests/noPassthroughWithMongod/balance_repl.js index 412dc95e9ac..ea2a7f87226 100644 --- a/jstests/noPassthroughWithMongod/balance_repl.js +++ b/jstests/noPassthroughWithMongod/balance_repl.js @@ -14,6 +14,7 @@ serverName = s.getServerName( "test" ) other = s.config.shards.findOne( { _id : { $ne : serverName } } ); s.adminCommand( { enablesharding : "test" } ) +s.ensurePrimaryShard('test', 'test-rs0'); s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } ); for ( i=0; i<20; i++ ) diff --git a/jstests/noPassthroughWithMongod/balance_tags1.js b/jstests/noPassthroughWithMongod/balance_tags1.js index 05b5ca31dc2..cf20d7ab488 100644 --- a/jstests/noPassthroughWithMongod/balance_tags1.js +++ b/jstests/noPassthroughWithMongod/balance_tags1.js @@ -2,14 +2,16 @@ s = new ShardingTest( "balance_tags1" , 3 , 1 , 1 , { sync:true, chunksize : 1 , nopreallocj : true } ) s.config.settings.update({ _id: "balancer" }, { $set: { stopped: false }}, true); +s.adminCommand({ enablesharding: "test" }); +s.ensurePrimaryShard('test', 'shard0001'); + db = s.getDB( "test" ); var bulk = db.foo.initializeUnorderedBulkOp(); -for ( i=0; i<21; i++ ) { +for (i = 0; i < 21; i++) { bulk.insert({ _id: i, x: i }); } assert.writeOK(bulk.execute()); -s.adminCommand( { enablesharding : "test" } ) s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } ); s.stopBalancer(); diff --git a/jstests/noPassthroughWithMongod/balance_tags2.js b/jstests/noPassthroughWithMongod/balance_tags2.js index 01389bb43cc..9ae1f680591 100644 --- a/jstests/noPassthroughWithMongod/balance_tags2.js +++ b/jstests/noPassthroughWithMongod/balance_tags2.js @@ -6,14 +6,15 @@ s = new ShardingTest( "balance_tags2" , 3 , 1 , 1 , s.config.settings.save({ _id: "balancer" }); db = s.getDB( "test" ); + +sh.enableSharding("test"); +s.ensurePrimaryShard('test', 'shard0001'); var bulk = db.foo.initializeUnorderedBulkOp(); -for ( i=0; i<21; i++ ) { +for (i = 0; i < 21; i++) { bulk.insert({ _id: i, x: i }); } assert.writeOK(bulk.execute()); -// enable sharding, shard, and stop balancer -sh.enableSharding("test"); sh.shardCollection("test.foo" , { _id : 1 }); sh.stopBalancer(); diff --git a/jstests/noPassthroughWithMongod/large_chunk.js b/jstests/noPassthroughWithMongod/large_chunk.js index 019e4313e48..13183896ae8 100644 --- a/jstests/noPassthroughWithMongod/large_chunk.js +++ b/jstests/noPassthroughWithMongod/large_chunk.js @@ -14,6 +14,10 @@ db = s.getDB( "test" ); // Step 1 - Test moving a large chunk // +// Turn on sharding on the 'test.foo' collection and generate a large chunk +s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); + bigString = "" while ( bigString.length < 10000 ) bigString += "asdasdasdasdadasdasdasdasdasdasdasdasda"; @@ -27,8 +31,6 @@ while ( inserted < ( 400 * 1024 * 1024 ) ){ } assert.writeOK(bulk.execute()); -// Turn on sharding on the 'test.foo' collection and generate a large chunk -s.adminCommand( { enablesharding : "test" } ); s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } ); assert.eq( 1 , s.config.chunks.count() , "step 1 - need one large chunk" ); diff --git a/jstests/noPassthroughWithMongod/sharding_balance1.js b/jstests/noPassthroughWithMongod/sharding_balance1.js index 32bb8ba508e..e7897d6e87f 100644 --- a/jstests/noPassthroughWithMongod/sharding_balance1.js +++ b/jstests/noPassthroughWithMongod/sharding_balance1.js @@ -4,6 +4,7 @@ s = new ShardingTest( "slow_sharding_balance1" , 2 , 1 , 1 , { chunksize : 1, enableBalancer : true } ) s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.config.settings.find().forEach( printjson ) diff --git a/jstests/noPassthroughWithMongod/sharding_balance3.js b/jstests/noPassthroughWithMongod/sharding_balance3.js index 03787c756ac..fb34a09e24d 100644 --- a/jstests/noPassthroughWithMongod/sharding_balance3.js +++ b/jstests/noPassthroughWithMongod/sharding_balance3.js @@ -5,6 +5,7 @@ s = new ShardingTest( "slow_sharding_balance3" , 2 , 3 , 1 , { chunksize : 1, enableBalancer : true } ); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.config.settings.find().forEach( printjson ); diff --git a/jstests/noPassthroughWithMongod/sharding_balance4.js b/jstests/noPassthroughWithMongod/sharding_balance4.js index fa50deb7645..9ce404d9f95 100644 --- a/jstests/noPassthroughWithMongod/sharding_balance4.js +++ b/jstests/noPassthroughWithMongod/sharding_balance4.js @@ -6,6 +6,7 @@ s = new ShardingTest( "slow_sharding_balance4" , 2 , 1 , 1 , { chunksize : 1 } ) s.stopBalancer(); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } ); assert.eq( 1 , s.config.chunks.count() , "setup1" ); diff --git a/jstests/noPassthroughWithMongod/sharding_migrateBigObject.js b/jstests/noPassthroughWithMongod/sharding_migrateBigObject.js index c819b65477d..cfa91a6ec77 100644 --- a/jstests/noPassthroughWithMongod/sharding_migrateBigObject.js +++ b/jstests/noPassthroughWithMongod/sharding_migrateBigObject.js @@ -5,6 +5,9 @@ var admin = mongos.getDB("admin"); db = mongos.getDB("test"); var coll = db.getCollection("stuff") +assert.commandWorked(admin.runCommand({ enablesharding : coll.getDB().getName() })); +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); + var data = "x" var nsq = 16 var n = 255 @@ -24,8 +27,6 @@ assert.eq( 40 , coll.count() , "prep1" ); printjson( coll.stats() ) -admin.runCommand({ enablesharding : "" + coll.getDB() }) - admin.printShardingStatus() admin.runCommand({ shardcollection : "" + coll, key : { _id : 1 } }) diff --git a/jstests/noPassthroughWithMongod/sharding_migrate_cursor1.js b/jstests/noPassthroughWithMongod/sharding_migrate_cursor1.js index c4484356dd4..93422301de2 100644 --- a/jstests/noPassthroughWithMongod/sharding_migrate_cursor1.js +++ b/jstests/noPassthroughWithMongod/sharding_migrate_cursor1.js @@ -8,6 +8,7 @@ s.config.settings.update( { _id: "balancer" }, { $set : { stopped: true } } , tr s.adminCommand( { enablesharding : "test" } ); db = s.getDB( "test" ) +s.ensurePrimaryShard('test', 'shard0001'); t = db.foo bigString = "" diff --git a/jstests/noPassthroughWithMongod/sharding_rs1.js b/jstests/noPassthroughWithMongod/sharding_rs1.js index c7959c08aee..d9b9233f364 100644 --- a/jstests/noPassthroughWithMongod/sharding_rs1.js +++ b/jstests/noPassthroughWithMongod/sharding_rs1.js @@ -1,8 +1,10 @@ // tests sharding with replica sets -s = new ShardingTest( "rs1" , 3 /* numShards */, 1 /* verboseLevel */, 2 /* numMongos */, { rs : true , chunksize : 1, enableBalancer : true } ) +var s = new ShardingTest({ shards: 3, verbose: 1, mongos: 2, + other: { rs: true , chunksize: 1, enableBalancer: true }}); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'test-rs0'); s.config.settings.update( { _id: "balancer" }, { $set : { _waitForDelete : true } } , true ); s.config.settings.find().forEach( printjson ) diff --git a/jstests/noPassthroughWithMongod/sharding_rs2.js b/jstests/noPassthroughWithMongod/sharding_rs2.js index 04cbdeafa4c..117b180a6b5 100644 --- a/jstests/noPassthroughWithMongod/sharding_rs2.js +++ b/jstests/noPassthroughWithMongod/sharding_rs2.js @@ -6,6 +6,9 @@ var s = new ShardingTest({ shards: { rs0: { nodes: 2 }, rs1: { nodes: 2 }}, db = s.getDB( "test" ) t = db.foo +s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'test-rs0'); + // ------------------------------------------------------------------------------------------- // ---------- test that config server updates when replica set config changes ---------------- // ------------------------------------------------------------------------------------------- @@ -114,7 +117,6 @@ gc(); gc(); gc(); assert.eq( 100 , db.foo.count() , "C1" ) -s.adminCommand( { enablesharding : "test" } ); s.adminCommand( { shardcollection : "test.foo" , key : { x : 1 } } ); // We're doing some manual chunk stuff, so stop the balancer first diff --git a/jstests/noPassthroughWithMongod/ttl_sharded.js b/jstests/noPassthroughWithMongod/ttl_sharded.js index 2d551d1e09e..c7146b63cb7 100644 --- a/jstests/noPassthroughWithMongod/ttl_sharded.js +++ b/jstests/noPassthroughWithMongod/ttl_sharded.js @@ -16,6 +16,7 @@ t = s.getDB( dbname ).getCollection( coll ); // enable sharding of the collection. Only 1 chunk initially s.adminCommand( { enablesharding : dbname } ); +s.ensurePrimaryShard(dbname, 'shard0001'); s.adminCommand( { shardcollection : ns , key: { _id : 1 } } ); // insert 24 docs, with timestamps at one hour intervals diff --git a/jstests/sharding/SERVER-7379.js b/jstests/sharding/SERVER-7379.js index f4730495624..f59ec8d139f 100644 --- a/jstests/sharding/SERVER-7379.js +++ b/jstests/sharding/SERVER-7379.js @@ -1,6 +1,7 @@ var st = new ShardingTest({ shards: 2 }); st.adminCommand({ enablesharding: "test" }); +st.ensurePrimaryShard('test', 'shard0001'); st.adminCommand({ shardcollection: "test.offerChange", key: { "categoryId": 1, "store": 1, "_id": 1 } }); var db = st.s.getDB('test'); diff --git a/jstests/sharding/authCommands.js b/jstests/sharding/authCommands.js index 9624da7d34f..e97a319d9f1 100644 --- a/jstests/sharding/authCommands.js +++ b/jstests/sharding/authCommands.js @@ -49,6 +49,7 @@ st.rs1.getPrimary().getDB( 'admin' ).createUser({user: 'user', jsTestLog('Creating initial data'); st.adminCommand( { enablesharding : "test" } ); +st.ensurePrimaryShard('test', 'test-rs0'); st.adminCommand( { shardcollection : "test.foo" , key : { i : 1, j : 1 } } ); // Stop the balancer, so no moveChunks will interfere with the splits we're testing diff --git a/jstests/sharding/authConnectionHook.js b/jstests/sharding/authConnectionHook.js index 52a2b25b050..180ceff7eb4 100644 --- a/jstests/sharding/authConnectionHook.js +++ b/jstests/sharding/authConnectionHook.js @@ -12,6 +12,7 @@ adminDB.createUser({user: 'admin', pwd: 'password', roles: jsTest.adminUserRoles adminDB.auth('admin', 'password'); adminDB.runCommand({enableSharding : "test"}); +st.ensurePrimaryShard('test', 'shard0001'); adminDB.runCommand({shardCollection : "test.foo", key : {x : 1}}); st.stopBalancer(); @@ -42,4 +43,4 @@ assert.soon( function() { printjson(db.foo.findOne({x:25})); printjson(db.foo.findOne({x:75})); -st.stop();
\ No newline at end of file +st.stop(); diff --git a/jstests/sharding/auto1.js b/jstests/sharding/auto1.js index 781630d7405..70249c85c8d 100644 --- a/jstests/sharding/auto1.js +++ b/jstests/sharding/auto1.js @@ -3,6 +3,7 @@ s = new ShardingTest( "auto1" , 2 , 1 , 1, { enableBalancer : 1 } ); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } ); bigString = ""; diff --git a/jstests/sharding/auto2.js b/jstests/sharding/auto2.js index 06346c34298..6eb46bb45c4 100644 --- a/jstests/sharding/auto2.js +++ b/jstests/sharding/auto2.js @@ -3,6 +3,7 @@ s = new ShardingTest( "auto2" , 2 , 1 , 2 ); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } ); bigString = ""; diff --git a/jstests/sharding/batch_write_command_sharded.js b/jstests/sharding/batch_write_command_sharded.js index b23963c5f4f..a7aa05c0b4e 100644 --- a/jstests/sharding/batch_write_command_sharded.js +++ b/jstests/sharding/batch_write_command_sharded.js @@ -29,6 +29,7 @@ var result; var coll = mongos.getCollection("foo.bar"); assert.commandWorked(admin.runCommand({ enableSharding : coll.getDB().toString() })); +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); assert.commandWorked(admin.runCommand({ shardCollection : coll.toString(), key : { _id : 1 } })); diff --git a/jstests/sharding/bouncing_count.js b/jstests/sharding/bouncing_count.js index d9630a4e930..c5f22f0b170 100644 --- a/jstests/sharding/bouncing_count.js +++ b/jstests/sharding/bouncing_count.js @@ -13,7 +13,8 @@ var collA = mongosA.getCollection( "foo.bar" ) var collB = mongosB.getCollection( "" + collA ) var collC = mongosB.getCollection( "" + collA ) -admin.runCommand({ enableSharding : "" + collA.getDB() }) +admin.runCommand({ enableSharding : "" + collA.getDB() }); +st.ensurePrimaryShard(collA.getDB().getName(), 'shard0001'); admin.runCommand({ shardCollection : "" + collA, key : { _id : 1 } }) var shards = config.shards.find().sort({ _id : 1 }).toArray() @@ -46,4 +47,4 @@ jsTestLog( "Running count!" ) printjson( collB.count() ) printjson( collC.find().toArray() ) -st.stop()
\ No newline at end of file +st.stop() diff --git a/jstests/sharding/coll_epoch_test0.js b/jstests/sharding/coll_epoch_test0.js index 1b9c6294b85..73614c095f5 100644 --- a/jstests/sharding/coll_epoch_test0.js +++ b/jstests/sharding/coll_epoch_test0.js @@ -10,6 +10,7 @@ var coll = st.s.getCollection( "foo.bar" ) // First enable sharding admin.runCommand({ enableSharding : coll.getDB() + "" }) +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); admin.runCommand({ shardCollection : coll + "", key : { _id : 1 } }) var primary = config.databases.find({ _id : coll.getDB() + "" }).primary @@ -44,4 +45,4 @@ printjson( admin.runCommand({ moveChunk : coll + "", find : { _id : 0 }, to : no // Check all the chunks for epochs checkEpochs(); -st.stop()
\ No newline at end of file +st.stop() diff --git a/jstests/sharding/coll_epoch_test1.js b/jstests/sharding/coll_epoch_test1.js index c6b6680469e..3fd97e8105f 100644 --- a/jstests/sharding/coll_epoch_test1.js +++ b/jstests/sharding/coll_epoch_test1.js @@ -28,6 +28,7 @@ config.shards.find().forEach( function( doc ){ jsTest.log( "Enabling sharding for the first time..." ) admin.runCommand({ enableSharding : coll.getDB() + "" }) +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); admin.runCommand({ shardCollection : coll + "", key : { _id : 1 } }) var bulk = insertMongos.getCollection( coll + "" ).initializeUnorderedBulkOp(); @@ -47,6 +48,7 @@ coll.drop() jsTest.log( "Re-enabling sharding with a different key..." ) admin.runCommand({ enableSharding : coll.getDB() + "" }) +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); coll.ensureIndex({ notId : 1 }) admin.runCommand({ shardCollection : coll + "", key : { notId : 1 } }) diff --git a/jstests/sharding/coll_epoch_test2.js b/jstests/sharding/coll_epoch_test2.js index eb7969b9480..03488168d9e 100644 --- a/jstests/sharding/coll_epoch_test2.js +++ b/jstests/sharding/coll_epoch_test2.js @@ -32,6 +32,7 @@ config.shards.find().forEach( function( doc ){ jsTest.log( "Enabling sharding for the first time..." ) admin.runCommand({ enableSharding : coll.getDB() + "" }) +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); admin.runCommand({ shardCollection : coll + "", key : { _id : 1 } }) assert.writeOK(coll.insert({ hello : "world" })); @@ -78,6 +79,7 @@ assert(droppedCollDoc.lastmodEpoch.equals(new ObjectId("000000000000000000000000 "epoch not zero: " + droppedCollDoc.lastmodEpoch); admin.runCommand({ enableSharding : coll.getDB() + "" }) +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); admin.runCommand({ shardCollection : coll + "", key : { _id : 1 } }) var bulk = coll.initializeUnorderedBulkOp(); diff --git a/jstests/sharding/count1.js b/jstests/sharding/count1.js index 082281f5f84..19d70456d1f 100644 --- a/jstests/sharding/count1.js +++ b/jstests/sharding/count1.js @@ -35,6 +35,7 @@ assert.eq( 1 , db.bar.find( { n : 1 } ).count() , "bar 2" ); // part 1 s.adminCommand( { enablesharding : "test" } ) +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { name : 1 } } ); primary = s.getServer( "test" ).getDB( "test" ); diff --git a/jstests/sharding/count2.js b/jstests/sharding/count2.js index edac3b692ec..7c84c415646 100644 --- a/jstests/sharding/count2.js +++ b/jstests/sharding/count2.js @@ -5,6 +5,7 @@ s2 = s1._mongos[1]; s1.stopBalancer(); s1.adminCommand( { enablesharding: "test" } ); +s1.ensurePrimaryShard('test', 'shard0001'); s1.adminCommand( { shardcollection: "test.foo" , key : { name : 1 } } ); db1 = s1.getDB( "test" ).foo; diff --git a/jstests/sharding/cursor1.js b/jstests/sharding/cursor1.js index 6ca7e5ff1cb..c0c3439ac5b 100644 --- a/jstests/sharding/cursor1.js +++ b/jstests/sharding/cursor1.js @@ -9,6 +9,7 @@ s.config.settings.find().forEach( printjson ) // create a sharded 'test.foo', for the moment with just one chunk s.adminCommand( { enablesharding: "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection: "test.foo", key: { _id: 1 } } ) db = s.getDB( "test" ); diff --git a/jstests/sharding/delete_during_migrate.js b/jstests/sharding/delete_during_migrate.js index 4b01d16734a..81daf3c3e52 100644 --- a/jstests/sharding/delete_during_migrate.js +++ b/jstests/sharding/delete_during_migrate.js @@ -14,15 +14,19 @@ 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(); -for ( i=0; i<200000; i++ ){ - t.insert( { a : i } ); +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( { enablesharding : dbname } ); s.adminCommand( { shardcollection : ns , key: { a : 1 } } ); // start a parallel shell that deletes things diff --git a/jstests/sharding/explain_cmd.js b/jstests/sharding/explain_cmd.js index 062f39f5957..bf9ed176617 100644 --- a/jstests/sharding/explain_cmd.js +++ b/jstests/sharding/explain_cmd.js @@ -15,6 +15,7 @@ collSharded.ensureIndex({b: 1}); // Enable sharding. assert.commandWorked(db.adminCommand({enableSharding: db.getName()})); +st.ensurePrimaryShard(db.getName(), 'shard0001'); db.adminCommand({shardCollection: collSharded.getFullName(), key: {a: 1}}); // Pre-split the collection to ensure that both shards have chunks. Explicitly diff --git a/jstests/sharding/fair_balancer_round.js b/jstests/sharding/fair_balancer_round.js index a565b469667..d741a2aa2c6 100644 --- a/jstests/sharding/fair_balancer_round.js +++ b/jstests/sharding/fair_balancer_round.js @@ -15,6 +15,7 @@ var coll = mongos.getCollection("foo.bar"); // Shard collection through first mongos assert(mongos.adminCommand({enableSharding : coll.getDB() + ""}).ok); +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); assert(mongos.adminCommand({shardCollection : coll + "", key : {_id : 1}}).ok); // Create a bunch of chunks diff --git a/jstests/sharding/features1.js b/jstests/sharding/features1.js index 23424075d1b..22fed89fef8 100644 --- a/jstests/sharding/features1.js +++ b/jstests/sharding/features1.js @@ -5,6 +5,7 @@ s = new ShardingTest( "features1" , 2 , 1 , 1 ); s.stopBalancer(); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); // ---- can't shard system namespaces ---- diff --git a/jstests/sharding/features2.js b/jstests/sharding/features2.js index 4689630718e..c5c77e884b2 100644 --- a/jstests/sharding/features2.js +++ b/jstests/sharding/features2.js @@ -7,6 +7,7 @@ s = new ShardingTest( "features2" , 2 , 1 , 1 ); s.stopBalancer() s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); a = s._connections[0].getDB( "test" ); b = s._connections[1].getDB( "test" ); diff --git a/jstests/sharding/features3.js b/jstests/sharding/features3.js index 67ba574e63c..afa7eeb1367 100644 --- a/jstests/sharding/features3.js +++ b/jstests/sharding/features3.js @@ -18,6 +18,7 @@ s.stopBalancer() // shard test.foo and add a split point s.adminCommand({enablesharding: "test"}); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand({shardcollection : "test.foo", key: {_id: 1}}); s.adminCommand({split : "test.foo", middle: {_id: numDocs/2}}); diff --git a/jstests/sharding/findandmodify1.js b/jstests/sharding/findandmodify1.js index 058016e22c1..bc15a40f48d 100644 --- a/jstests/sharding/findandmodify1.js +++ b/jstests/sharding/findandmodify1.js @@ -2,6 +2,7 @@ s = new ShardingTest( "find_and_modify_sharded" , 2 , 2); s.adminCommand( { enablesharding : "test" } ); db = s.getDB( "test" ); +s.ensurePrimaryShard('test', 'shard0001'); primary = s.getServer( "test" ).getDB( "test" ); secondary = s.getOther( primary ).getDB( "test" ); diff --git a/jstests/sharding/findandmodify2.js b/jstests/sharding/findandmodify2.js index ad7b1688ca2..189838d76d3 100644 --- a/jstests/sharding/findandmodify2.js +++ b/jstests/sharding/findandmodify2.js @@ -2,6 +2,7 @@ var s = new ShardingTest({ name: "find_and_modify_sharded_2", shards: 2, verbose s.adminCommand( { enablesharding : "test" } ); var db = s.getDB( "test" ); +s.ensurePrimaryShard('test', 'shard0001'); var primary = s.getServer( "test" ).getDB( "test" ); var secondary = s.getOther( primary ).getDB( "test" ); diff --git a/jstests/sharding/geo_near_random1.js b/jstests/sharding/geo_near_random1.js index 1284e9b893e..c899ff8b776 100644 --- a/jstests/sharding/geo_near_random1.js +++ b/jstests/sharding/geo_near_random1.js @@ -11,6 +11,7 @@ db = s.getDB("test"); // global db var test = new GeoNearRandomTest(testName); s.adminCommand({enablesharding:'test'}); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand({shardcollection: ('test.' + testName), key: {_id:1} }); test.insertPts(50); diff --git a/jstests/sharding/geo_near_random2.js b/jstests/sharding/geo_near_random2.js index 621295ebc8d..1fd139017a6 100644 --- a/jstests/sharding/geo_near_random2.js +++ b/jstests/sharding/geo_near_random2.js @@ -11,6 +11,7 @@ db = s.getDB("test"); // global db var test = new GeoNearRandomTest(testName); s.adminCommand({enablesharding:'test'}); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand({shardcollection: ('test.' + testName), key: {_id:1} }); test.insertPts(5000); diff --git a/jstests/sharding/geo_shardedgeonear.js b/jstests/sharding/geo_shardedgeonear.js index 85aef9eb894..caa1287be92 100644 --- a/jstests/sharding/geo_shardedgeonear.js +++ b/jstests/sharding/geo_shardedgeonear.js @@ -41,6 +41,7 @@ var sharded = new ShardingTest({shards: 3, verbose: 0, mongos: 1}); sharded.stopBalancer(); sharded.adminCommand( { enablesharding : "test" } ); var shardedDB = sharded.getDB('test'); +sharded.ensurePrimaryShard('test', 'shard0001'); printjson(shardedDB); test(shardedDB, true, '2dsphere'); diff --git a/jstests/sharding/hash_basic.js b/jstests/sharding/hash_basic.js index 0cd11e5c1bf..6ddefdbb552 100644 --- a/jstests/sharding/hash_basic.js +++ b/jstests/sharding/hash_basic.js @@ -6,6 +6,7 @@ st.stopBalancer(); var testDB = st.s.getDB('test'); testDB.adminCommand({ enableSharding: 'test' }); +st.ensurePrimaryShard('test', 'shard0001');; testDB.adminCommand({ shardCollection: 'test.user', key: { x: 'hashed' }}); var configDB = st.s.getDB('config'); diff --git a/jstests/sharding/hash_shard1.js b/jstests/sharding/hash_shard1.js index dc164324c2a..1021a26f8d8 100644 --- a/jstests/sharding/hash_shard1.js +++ b/jstests/sharding/hash_shard1.js @@ -9,6 +9,7 @@ var ns = dbname + "." + coll; var db = s.getDB( dbname ); var t = db.getCollection( coll ); db.adminCommand( { enablesharding : dbname } ); +s.ensurePrimaryShard(dbname, 'shard0001'); // for simplicity start by turning off balancer s.stopBalancer(); diff --git a/jstests/sharding/hash_shard_non_empty.js b/jstests/sharding/hash_shard_non_empty.js index 25335f16610..c743e3a48ce 100644 --- a/jstests/sharding/hash_shard_non_empty.js +++ b/jstests/sharding/hash_shard_non_empty.js @@ -6,6 +6,7 @@ var dbname = "test"; var coll = "foo"; var db = s.getDB(dbname); db.adminCommand({ enablesharding : dbname }); +s.ensurePrimaryShard('test', 'shard0001'); //for simplicity turn off balancer s.stopBalancer(); diff --git a/jstests/sharding/hash_shard_num_chunks.js b/jstests/sharding/hash_shard_num_chunks.js index ee7f752d3d4..608e7c7674c 100644 --- a/jstests/sharding/hash_shard_num_chunks.js +++ b/jstests/sharding/hash_shard_num_chunks.js @@ -6,6 +6,7 @@ var dbname = "test"; var coll = "foo"; var db = s.getDB(dbname); db.adminCommand({ enablesharding : dbname }); +s.ensurePrimaryShard(dbname, 'shard0001'); //for simplicity turn off balancer s.stopBalancer(); diff --git a/jstests/sharding/hash_skey_split.js b/jstests/sharding/hash_skey_split.js index 817e6154c4a..4c24c8ab1b2 100644 --- a/jstests/sharding/hash_skey_split.js +++ b/jstests/sharding/hash_skey_split.js @@ -6,6 +6,7 @@ st.stopBalancer(); var configDB = st.s.getDB('config'); configDB.adminCommand({ enableSharding: 'test' }); +st.ensurePrimaryShard('test', 'shard0001'); configDB.adminCommand({ shardCollection: 'test.user', key: { x: 'hashed' }, numInitialChunks: 2 }); var metadata = st.d0.getDB('admin').runCommand({ getShardVersion: 'test.user', diff --git a/jstests/sharding/in_memory_sort_limit.js b/jstests/sharding/in_memory_sort_limit.js index 7dc494875e9..1ba8b2368a1 100644 --- a/jstests/sharding/in_memory_sort_limit.js +++ b/jstests/sharding/in_memory_sort_limit.js @@ -8,6 +8,7 @@ var db = st.s.getDB('test'); var mongosCol = db.getCollection('skip'); db.adminCommand({ enableSharding: 'test' }); + st.ensurePrimaryShard('test', 'shard0001'); db.adminCommand({ shardCollection: 'test.skip', key: { _id: 1 }}); var filler = new Array(10000).toString(); @@ -38,4 +39,4 @@ jsTestLog("Test error with limit of " + failLimit + " on mongos"); assert.throws( function() {mongosCol.find().sort({x:1}).limit(failLimit).itcount(); } ); - })();
\ No newline at end of file + })(); diff --git a/jstests/sharding/index1.js b/jstests/sharding/index1.js index 4d581837083..77ed3ba7444 100644 --- a/jstests/sharding/index1.js +++ b/jstests/sharding/index1.js @@ -18,7 +18,10 @@ for ( var i = 0; i < 22; i++ ) { } assert.writeOK(bulk.execute()); - if(i == 0) s.adminCommand( { enablesharding : "" + coll._db } ); + if (i == 0) { + s.adminCommand({ enablesharding: "" + coll._db }); + s.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); + } print("\n\n\n\n\nTest # " + i) diff --git a/jstests/sharding/jumbo1.js b/jstests/sharding/jumbo1.js index ccf31e83f2a..b8882f632ea 100644 --- a/jstests/sharding/jumbo1.js +++ b/jstests/sharding/jumbo1.js @@ -3,6 +3,7 @@ s = new ShardingTest( "jump1" , 2 /* numShards */, 2 /* verboseLevel */, 1 /* numMongos */, { chunksize : 1 } ) s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { x : 1 } } ); db = s.getDB( "test" ); diff --git a/jstests/sharding/key_many.js b/jstests/sharding/key_many.js index 5691932f83b..a458d5a9284 100644 --- a/jstests/sharding/key_many.js +++ b/jstests/sharding/key_many.js @@ -20,6 +20,7 @@ s.setBalancer( false ) s.adminCommand( { enablesharding : "test" } ) db = s.getDB( "test" ); +s.ensurePrimaryShard('test', 'shard0001'); primary = s.getServer( "test" ).getDB( "test" ); secondary = s.getOther( primary ).getDB( "test" ); diff --git a/jstests/sharding/key_string.js b/jstests/sharding/key_string.js index 225cf019ee4..2b15e657497 100644 --- a/jstests/sharding/key_string.js +++ b/jstests/sharding/key_string.js @@ -5,6 +5,7 @@ s.stopBalancer(); db = s.getDB( "test" ); s.adminCommand( { enablesharding : "test" } ) +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { name : 1 } } ); primary = s.getServer( "test" ).getDB( "test" ); diff --git a/jstests/sharding/limit_push.js b/jstests/sharding/limit_push.js index ad9d8b9a383..5aa9bd5bee0 100644 --- a/jstests/sharding/limit_push.js +++ b/jstests/sharding/limit_push.js @@ -15,6 +15,7 @@ assert.eq( 100 , db.limit_push.find().length() , "Incorrect number of documents" // Shard the collection s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.limit_push" , key : { x : 1 } } ); // Now split the and move the data between the shards diff --git a/jstests/sharding/localhostAuthBypass.js b/jstests/sharding/localhostAuthBypass.js index 5bd334fb9dc..7c0f8ae4999 100644 --- a/jstests/sharding/localhostAuthBypass.js +++ b/jstests/sharding/localhostAuthBypass.js @@ -60,7 +60,7 @@ var assertCannotRunCommands = function(mongo, st) { assert.writeError(test.foo.remove({ _id: 0 })); // Multi-shard - assert.throws(function() { + assert.throws(function() { test.foo.mapReduce( function() { emit(1, 1); }, function(id, count) { return Array.sum(count); }, @@ -151,9 +151,12 @@ var authenticate = function(mongo) { mongo.getDB("admin").auth(username, password); }; -var setupSharding = function(mongo) { +var setupSharding = function(shardingTest) { + var mongo = shardingTest.s; + print("============ enabling sharding on test.foo."); mongo.getDB("admin").runCommand({enableSharding : "test"}); + shardingTest.ensurePrimaryShard('test', 'shard0001'); mongo.getDB("admin").runCommand({shardCollection : "test.foo", key : {_id : 1}}); var test = mongo.getDB("test"); @@ -230,10 +233,10 @@ var runTest = function() { createUser(mongo); authenticate(mongo); - setupSharding(mongo); + authenticate(st.s); + setupSharding(st); addUsersToEachShard(st); - authenticate(st.s); st.printShardingStatus(); assertCanRunCommands(mongo, st); diff --git a/jstests/sharding/mapReduce_inSharded.js b/jstests/sharding/mapReduce_inSharded.js index 8616600bdda..ae35861fb5a 100644 --- a/jstests/sharding/mapReduce_inSharded.js +++ b/jstests/sharding/mapReduce_inSharded.js @@ -10,6 +10,7 @@ var st = new ShardingTest({ shards : 2, verbose : 1, mongos : 1, other : { chunk st.startBalancer(); st.adminCommand( { enablesharding : "mrShard" } ) +st.ensurePrimaryShard('mrShard', 'shard0001'); st.adminCommand( { shardcollection : "mrShard.srcSharded", key : { "_id" : 1 } } ) var db = st.getDB( "mrShard" ); diff --git a/jstests/sharding/mapReduce_inSharded_outSharded.js b/jstests/sharding/mapReduce_inSharded_outSharded.js index f0a8a09e779..69174f2589d 100644 --- a/jstests/sharding/mapReduce_inSharded_outSharded.js +++ b/jstests/sharding/mapReduce_inSharded_outSharded.js @@ -10,6 +10,7 @@ var st = new ShardingTest({ shards : 2, verbose : 1, mongos : 1, other : { chunk st.startBalancer(); st.adminCommand( { enablesharding : "mrShard" } ) +st.ensurePrimaryShard('mrShard', 'shard0001'); st.adminCommand( { shardcollection : "mrShard.srcSharded", key : { "_id" : 1 } } ) var db = st.getDB( "mrShard" ); diff --git a/jstests/sharding/mapReduce_nonSharded.js b/jstests/sharding/mapReduce_nonSharded.js index 7cef68622a3..cd1437b83a5 100644 --- a/jstests/sharding/mapReduce_nonSharded.js +++ b/jstests/sharding/mapReduce_nonSharded.js @@ -10,6 +10,7 @@ var st = new ShardingTest({ shards : 2, verbose : 1, mongos : 1, other : { chunk st.startBalancer(); st.adminCommand( { enablesharding : "mrShard" } ) +st.ensurePrimaryShard('mrShard', 'shard0001'); st.adminCommand( { shardcollection : "mrShard.srcSharded", key : { "_id" : 1 } } ) var db = st.getDB( "mrShard" ); diff --git a/jstests/sharding/mapReduce_outSharded.js b/jstests/sharding/mapReduce_outSharded.js index 4a9d4e40eca..a42eb166e65 100644 --- a/jstests/sharding/mapReduce_outSharded.js +++ b/jstests/sharding/mapReduce_outSharded.js @@ -10,6 +10,7 @@ var st = new ShardingTest({ shards : 2, verbose : 1, mongos : 1, other : { chunk st.startBalancer(); st.adminCommand( { enablesharding : "mrShard" } ) +st.ensurePrimaryShard('mrShard', 'shard0001'); st.adminCommand( { shardcollection : "mrShard.srcSharded", key : { "_id" : 1 } } ) var db = st.getDB( "mrShard" ); diff --git a/jstests/sharding/migrateBig.js b/jstests/sharding/migrateBig.js index bf28cad6ea7..424eddb9042 100644 --- a/jstests/sharding/migrateBig.js +++ b/jstests/sharding/migrateBig.js @@ -2,6 +2,7 @@ s = new ShardingTest( "migrateBig" , 2 , 0 , 1 , { chunksize : 1 } ); s.config.settings.update( { _id: "balancer" }, { $set : { stopped : true, _waitForDelete : true } } , true ); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { x : 1 } } ); db = s.getDB( "test" ) diff --git a/jstests/sharding/mongos_validate_writes.js b/jstests/sharding/mongos_validate_writes.js index 3ef7b4715c3..d54349f8d6c 100644 --- a/jstests/sharding/mongos_validate_writes.js +++ b/jstests/sharding/mongos_validate_writes.js @@ -25,6 +25,7 @@ var staleCollA = staleMongosA.getCollection( coll + "" ) var staleCollB = staleMongosB.getCollection( coll + "" ) printjson( admin.runCommand({ enableSharding : coll.getDB() + "" }) ) +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); coll.ensureIndex({ a : 1 }) printjson( admin.runCommand({ shardCollection : coll + "", key : { a : 1 } }) ) diff --git a/jstests/sharding/movechunk_include.js b/jstests/sharding/movechunk_include.js index 8ffa1664526..d2ea5e31e62 100644 --- a/jstests/sharding/movechunk_include.js +++ b/jstests/sharding/movechunk_include.js @@ -6,6 +6,7 @@ function setupMoveChunkTest(st) { var testcoll = testdb.foo; st.adminCommand( { enablesharding : "test" } ); + st.ensurePrimaryShard('test', 'shard0001'); st.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } ); var str = ""; diff --git a/jstests/sharding/moveprimary_ignore_sharded.js b/jstests/sharding/moveprimary_ignore_sharded.js index c5fda358840..c378eb5856a 100644 --- a/jstests/sharding/moveprimary_ignore_sharded.js +++ b/jstests/sharding/moveprimary_ignore_sharded.js @@ -23,7 +23,9 @@ assert.writeOK(mongosA.getCollection("bar.coll2").insert({ hello : "world" })); // Enable sharding printjson( adminA.runCommand({ enableSharding : "foo" }) ); +st.ensurePrimaryShard('foo', 'shard0001'); printjson( adminA.runCommand({ enableSharding : "bar" }) ); +st.ensurePrimaryShard('bar', 'shard0000'); // Setup three collections per-db // 0 : not sharded diff --git a/jstests/sharding/multi_mongos2.js b/jstests/sharding/multi_mongos2.js index d5ec67171b7..bcb66fc79e3 100644 --- a/jstests/sharding/multi_mongos2.js +++ b/jstests/sharding/multi_mongos2.js @@ -7,6 +7,7 @@ s1 = new ShardingTest( "multi_mongos1" , 2 , 1 , 2 ); s2 = s1._mongos[1]; s1.adminCommand( { enablesharding : "test" } ); +s1.ensurePrimaryShard('test', 'shard0001'); s1.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } ); s1.config.databases.find().forEach( printjson ) diff --git a/jstests/sharding/multi_mongos2a.js b/jstests/sharding/multi_mongos2a.js index 9b907cc9478..75583f9cd91 100644 --- a/jstests/sharding/multi_mongos2a.js +++ b/jstests/sharding/multi_mongos2a.js @@ -7,6 +7,7 @@ s1 = new ShardingTest( "multi_mongos1" , 2 , 1 , 2 ); s2 = s1._mongos[1]; s1.adminCommand( { enablesharding : "test" } ); +s1.ensurePrimaryShard('test', 'shard0001'); s1.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } ); s1.config.databases.find().forEach( printjson ) diff --git a/jstests/sharding/parallel.js b/jstests/sharding/parallel.js index ffaa967dba6..be2aab23d17 100644 --- a/jstests/sharding/parallel.js +++ b/jstests/sharding/parallel.js @@ -4,6 +4,7 @@ s = new ShardingTest( "parallel" , numShards , 2 , 2 , { sync : true } ); s.setBalancer( false ) s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } ); db = s.getDB( "test" ); diff --git a/jstests/sharding/prefix_shard_key.js b/jstests/sharding/prefix_shard_key.js index 632628ebf58..c83ac366ef6 100644 --- a/jstests/sharding/prefix_shard_key.js +++ b/jstests/sharding/prefix_shard_key.js @@ -17,6 +17,7 @@ var shard0 = new Mongo( shards[0].host ); var shard1 = new Mongo( shards[1].host ); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); //******************Part 1******************** diff --git a/jstests/sharding/presplit.js b/jstests/sharding/presplit.js index 6820a5fb332..894ea473a79 100644 --- a/jstests/sharding/presplit.js +++ b/jstests/sharding/presplit.js @@ -3,6 +3,9 @@ // Starts a new sharding environment limiting the chunksize to 1MB. s = new ShardingTest( "presplit" , 2 , 2 , 1 , { chunksize : 1 } ); +s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); + // Insert enough data in 'test.foo' to fill several chunks, if it was sharded. bigString = ""; while ( bigString.length < 10000 ){ @@ -25,8 +28,6 @@ primary = s.getServer( "test" ).getDB( "test" ); assert.eq( 0 , s.config.chunks.count() , "single chunk assertion" ); assert.eq( num , primary.foo.count() ); -// Turn on sharding on the 'test.foo' collection -s.adminCommand( { enablesharding : "test" } ); s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } ); // Make sure the collection's original chunk got split diff --git a/jstests/sharding/remove2.js b/jstests/sharding/remove2.js index da92ebd1d53..48bb95e1e95 100644 --- a/jstests/sharding/remove2.js +++ b/jstests/sharding/remove2.js @@ -71,16 +71,15 @@ addShard = function(st, replTest) { print( "Shard added successfully" ); }; -var st = new ShardingTest( testName = "remove2", - numShards = 2, - verboseLevel = 0, - numMongos = 1, - { chunkSize : 1, - rs : true, - rs0 : { nodes : 2 }, - rs1 : { nodes : 2 }, - enableBalancer: true - }); +var st = new ShardingTest({ shards: { + rs0: { nodes: 2 }, + rs1: { nodes: 2 } + }, + verbose: 0, + other: { + chunkSize: 1, + enableBalancer: true + }}); // Pending resolution of SERVER-8598, we need to wait for deletion after chunk migrations to avoid // a pending delete re-creating a database after it was dropped. @@ -104,6 +103,7 @@ for( var i = 0; i < rst0.nodes.length; i++ ) { } st.admin.runCommand({ enableSharding : coll.getDB().getName() }); +st.ensurePrimaryShard(coll.getDB().getName(), 'test-rs0'); st.admin.runCommand({ shardCollection : coll.getFullName(), key: { i : 1 }}); // Setup initial data diff --git a/jstests/sharding/shard1.js b/jstests/sharding/shard1.js index b14ec95f66f..c13b2888e8c 100644 --- a/jstests/sharding/shard1.js +++ b/jstests/sharding/shard1.js @@ -16,6 +16,7 @@ shardCommand = { shardcollection : "test.foo" , key : { num : 1 } }; assert.throws( function(){ s.adminCommand( shardCommand ); } ); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); assert.eq( 3 , db.foo.find().length() , "after partitioning count failed" ); s.adminCommand( shardCommand ); diff --git a/jstests/sharding/shard2.js b/jstests/sharding/shard2.js index 41b46158167..7c389f87558 100644 --- a/jstests/sharding/shard2.js +++ b/jstests/sharding/shard2.js @@ -27,6 +27,7 @@ s.stopBalancer() db = s.getDB( "test" ); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } ); assert.eq( 1 , s.config.chunks.count() , "sanity check 1" ); diff --git a/jstests/sharding/shard3.js b/jstests/sharding/shard3.js index 290349aee58..197f90f3980 100644 --- a/jstests/sharding/shard3.js +++ b/jstests/sharding/shard3.js @@ -9,6 +9,7 @@ s2 = s._mongos[1]; db = s.getDB( "test" ) s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } ); assert( sh.getBalancerState() , "A1" ) @@ -145,6 +146,7 @@ assert.eq( 0 , doCounts( "after dropDatabase called" ) ) // ---- retry commands SERVER-1471 ---- s.adminCommand( { enablesharding : "test2" } ); +s.ensurePrimaryShard('test2', 'shard0000') s.adminCommand( { shardcollection : "test2.foo" , key : { num : 1 } } ); dba = s.getDB( "test2" ); dbb = s2.getDB( "test2" ); diff --git a/jstests/sharding/shard4.js b/jstests/sharding/shard4.js index 6b48b02bc2f..0252810460b 100644 --- a/jstests/sharding/shard4.js +++ b/jstests/sharding/shard4.js @@ -6,6 +6,7 @@ s.stopBalancer() s2 = s._mongos[1]; s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } ); s.getDB( "test" ).foo.save( { num : 1 } ); diff --git a/jstests/sharding/shard5.js b/jstests/sharding/shard5.js index 2dffecace9b..1822a3fcb81 100644 --- a/jstests/sharding/shard5.js +++ b/jstests/sharding/shard5.js @@ -8,6 +8,7 @@ s.stopBalancer(); s2 = s._mongos[1]; s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } ); s.getDB( "test" ).foo.save( { num : 1 } ); diff --git a/jstests/sharding/shard6.js b/jstests/sharding/shard6.js index 55ae710ab44..1a7b5727f36 100644 --- a/jstests/sharding/shard6.js +++ b/jstests/sharding/shard6.js @@ -7,6 +7,7 @@ s = new ShardingTest( "shard6" , 2 , 0 , 2 ); s.config.settings.update( { _id: "balancer" }, { $set : { stopped: true } } , true ); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.data" , key : { num : 1 } } ); db = s.getDB( "test" ); diff --git a/jstests/sharding/shard7.js b/jstests/sharding/shard7.js index 7d37fdf60f6..77943686ead 100644 --- a/jstests/sharding/shard7.js +++ b/jstests/sharding/shard7.js @@ -8,6 +8,7 @@ c = db[ 'foo' ]; c.drop(); s.adminCommand( { enablesharding: '' + db } ); +s.ensurePrimaryShard(db.getName(), 'shard0001'); s.adminCommand( { shardcollection: '' + c, key: { a:1,b:1 } } ); // Check query operation with some satisfiable and unsatisfiable queries. diff --git a/jstests/sharding/shard_existing.js b/jstests/sharding/shard_existing.js index e6a55040877..f2dca5a7b7a 100644 --- a/jstests/sharding/shard_existing.js +++ b/jstests/sharding/shard_existing.js @@ -23,6 +23,7 @@ var dataSize = db.data.stats().size; assert.lte(totalSize, dataSize); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); res = s.adminCommand( { shardcollection : "test.data" , key : { _id : 1 } } ); printjson(res); diff --git a/jstests/sharding/shard_key_immutable.js b/jstests/sharding/shard_key_immutable.js index 0cd79d4252d..c05ff17e365 100644 --- a/jstests/sharding/shard_key_immutable.js +++ b/jstests/sharding/shard_key_immutable.js @@ -40,6 +40,7 @@ var st = new ShardingTest({ shards: 2 }); st.adminCommand({ enablesharding: "test" }); +st.ensurePrimaryShard('test', 'shard0001'); st.adminCommand({ shardcollection: "test.col0", key: { a: 1, b: 1 }}); st.adminCommand({ shardcollection: "test.col1", key: { 'x.a': 1 }}); diff --git a/jstests/sharding/shard_keycount.js b/jstests/sharding/shard_keycount.js index e2bedcb5bdb..408774785c8 100644 --- a/jstests/sharding/shard_keycount.js +++ b/jstests/sharding/shard_keycount.js @@ -17,6 +17,7 @@ for(var i = 0; i < 10; i++){ // Enable sharding on DB s.adminCommand( { enablesharding : dbName } ); +s.ensurePrimaryShard(dbName, 'shard0001'); // Enable sharding on collection s.adminCommand( { shardcollection : ns, key : { _id : 1 } } ); diff --git a/jstests/sharding/shard_targeting.js b/jstests/sharding/shard_targeting.js index 7b47a2907cd..6a2634f40a0 100644 --- a/jstests/sharding/shard_targeting.js +++ b/jstests/sharding/shard_targeting.js @@ -6,6 +6,7 @@ var s = new ShardingTest("shard_targeting", 2, 0, 1); s.adminCommand({ enablesharding : "test" }); +s.ensurePrimaryShard('test', 'shard0001'); s.stopBalancer(); var db = s.getDB("test"); diff --git a/jstests/sharding/shard_with_special_db_names.js b/jstests/sharding/shard_with_special_db_names.js index 7277abac580..2887f364743 100644 --- a/jstests/sharding/shard_with_special_db_names.js +++ b/jstests/sharding/shard_with_special_db_names.js @@ -5,11 +5,13 @@ var specialDB = "[a-z]+"; var specialNS = specialDB + ".special"; s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.data" , key : { num : 1 } } ); // Test that the database will not complain "cannot have 2 database names that // differs on case" s.adminCommand( { enablesharding : specialDB } ); +s.ensurePrimaryShard(specialDB, 'shard0000'); s.adminCommand( { shardcollection : specialNS, key : { num : 1 } } ); var exists = s.getDB("config").collections.find( { _id: specialNS } ).count(); diff --git a/jstests/sharding/sharding_system_namespaces.js b/jstests/sharding/sharding_system_namespaces.js index 894230f76e1..b27c3635c5d 100644 --- a/jstests/sharding/sharding_system_namespaces.js +++ b/jstests/sharding/sharding_system_namespaces.js @@ -44,6 +44,7 @@ if (Array.contains(storageEngines, "wiredTiger")) { checkCollectionOptions(db); assert.commandWorked(db.adminCommand({ enableSharding: 'test' })); + st.ensurePrimaryShard('test', 'shard0001'); assert.commandWorked(db.adminCommand({ shardCollection: coll + '', key: { x: 1 }})); coll.insert({x: 0}); diff --git a/jstests/sharding/sort1.js b/jstests/sharding/sort1.js index aea55741251..f2a682a82d2 100644 --- a/jstests/sharding/sort1.js +++ b/jstests/sharding/sort1.js @@ -3,6 +3,7 @@ s = new ShardingTest( "sort1" , 2 , 0 , 2 ) s.stopBalancer(); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.data" , key : { 'sub.num' : 1 } } ); db = s.getDB( "test" ); diff --git a/jstests/sharding/stats.js b/jstests/sharding/stats.js index 41fa2534cf7..6c21e3861da 100644 --- a/jstests/sharding/stats.js +++ b/jstests/sharding/stats.js @@ -5,6 +5,7 @@ a = s._connections[0].getDB( "test" ); b = s._connections[1].getDB( "test" ); db = s.getDB( "test" ); +s.ensurePrimaryShard('test', 'shard0001'); function numKeys(o){ var num = 0; diff --git a/jstests/sharding/sync2.js b/jstests/sharding/sync2.js index bdb639e59e5..de4ea6b2ddc 100644 --- a/jstests/sharding/sync2.js +++ b/jstests/sharding/sync2.js @@ -6,6 +6,7 @@ s.stopBalancer() var s2 = s._mongos[1]; s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { num : 1 } } ); s.config.settings.update( { _id: "balancer" }, { $set : { stopped: true } } , true ); diff --git a/jstests/sharding/tag_auto_split.js b/jstests/sharding/tag_auto_split.js index 80dae792b10..5e2fe256619 100644 --- a/jstests/sharding/tag_auto_split.js +++ b/jstests/sharding/tag_auto_split.js @@ -5,6 +5,7 @@ s = new ShardingTest( "tag_auto_split", 2, 0, 1, { nopreallocj : true, enableBal db = s.getDB( "test" ); s.adminCommand( { enablesharding : "test" } ) +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1 } } ); assert.eq( 1, s.config.chunks.count() ); @@ -29,6 +30,7 @@ s = new ShardingTest( "tag_auto_split2", 2, 0, 1, { nopreallocj : true, enableBa db = s.getDB( "test" ); s.adminCommand( { enablesharding : "test" } ) +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardcollection : "test.foo" , key : { _id : 1, a : 1 } } ); assert.eq( 1, s.config.chunks.count() ); diff --git a/jstests/sharding/tag_range.js b/jstests/sharding/tag_range.js index 8d8244c82c1..e934a0b01e9 100644 --- a/jstests/sharding/tag_range.js +++ b/jstests/sharding/tag_range.js @@ -10,6 +10,7 @@ s = new ShardingTest( "tag_range" , 2 , 0 , 1 , { nopreallocj : true } ); db = s.getDB( "tag_range" ); s.adminCommand( { enableSharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); s.adminCommand( { shardCollection : "test.tag_range" , key : { _id : 1 } } ); assert.eq( 1 , s.config.chunks.count() ); diff --git a/jstests/sharding/update_immutable_fields.js b/jstests/sharding/update_immutable_fields.js index 87ef28477ce..0ba27bd2706 100644 --- a/jstests/sharding/update_immutable_fields.js +++ b/jstests/sharding/update_immutable_fields.js @@ -10,6 +10,7 @@ var coll = mongos.getCollection(jsTestName() + ".coll1"); var shard0 = st.shard0; printjson(config.adminCommand({enableSharding : coll.getDB() + ""})) +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0000'); printjson(config.adminCommand({shardCollection : "" + coll, key : {a : 1}})) var getDirectShardedConn = function( st, collName ) { diff --git a/jstests/sharding/update_sharded.js b/jstests/sharding/update_sharded.js index 466e7bfdfa8..948781e6d66 100644 --- a/jstests/sharding/update_sharded.js +++ b/jstests/sharding/update_sharded.js @@ -4,6 +4,7 @@ s = new ShardingTest( "auto1" , 2 , 1 , 1 ); s.adminCommand( { enablesharding : "test" } ); +s.ensurePrimaryShard('test', 'shard0001'); // repeat same tests with hashed shard key, to ensure identical behavior s.adminCommand( { shardcollection : "test.update0" , key : { key : 1 } } ); s.adminCommand( { shardcollection : "test.update1" , key : { key : "hashed" } } ); diff --git a/jstests/sharding/upsert_sharded.js b/jstests/sharding/upsert_sharded.js index fad0218da8c..885dc23fcfa 100644 --- a/jstests/sharding/upsert_sharded.js +++ b/jstests/sharding/upsert_sharded.js @@ -14,6 +14,7 @@ var shards = mongos.getCollection( "config.shards" ).find().toArray(); var coll = mongos.getCollection( "foo.bar" ); assert( admin.runCommand({ enableSharding : coll.getDB() + "" }).ok ); +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); var upsertedResult = function(query, expr) { coll.remove({}); diff --git a/jstests/sharding/zbigMapReduce.js b/jstests/sharding/zbigMapReduce.js index 0dbda139fd4..79813ff06fd 100644 --- a/jstests/sharding/zbigMapReduce.js +++ b/jstests/sharding/zbigMapReduce.js @@ -17,6 +17,7 @@ function setupTest() { config.settings.save({_id: "chunksize", value: 1}); s.adminCommand( { enablesharding : "test" } ) + s.ensurePrimaryShard('test', 'test-rs0'); s.adminCommand( { shardcollection : "test.foo", key : { "_id" : 1 } } ) return s; } diff --git a/jstests/slow1/sharding_multiple_collections.js b/jstests/slow1/sharding_multiple_collections.js index 6577e0050fa..922087ba2aa 100644 --- a/jstests/slow1/sharding_multiple_collections.js +++ b/jstests/slow1/sharding_multiple_collections.js @@ -3,8 +3,8 @@ s = new ShardingTest( "multcollections" , 2 , 1 , 1 , { chunksize : 1, enableBalancer : true } ); s.adminCommand( { enablesharding : "test" } ); - db = s.getDB( "test" ) +s.ensurePrimaryShard('test', 'shard0001'); N = 100000 diff --git a/jstests/slow2/cursor_timeout.js b/jstests/slow2/cursor_timeout.js index 3e80e6c6fa7..4fe24727391 100644 --- a/jstests/slow2/cursor_timeout.js +++ b/jstests/slow2/cursor_timeout.js @@ -6,6 +6,7 @@ var configDB = st.config; var coll = st.s.getDB( 'test' ).user; adminDB.runCommand({ enableSharding: coll.getDB().getName() }); +st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001'); adminDB.runCommand({ shardCollection: coll.getFullName(), key: { x: 1 }}); var data = 'c'; diff --git a/jstests/tool/dumprestore9.js b/jstests/tool/dumprestore9.js index cef9a623cf1..8661452c4dd 100644 --- a/jstests/tool/dumprestore9.js +++ b/jstests/tool/dumprestore9.js @@ -11,6 +11,7 @@ s = new ShardingTest( "dumprestore9a", 2, 0, 3, { chunksize : 1, enableBalancer step("Shard collection"); s.adminCommand( { enablesharding : "aaa" } ); // Make this db alphabetically before 'config' so it gets restored first +s.ensurePrimaryShard('aaa', 'shard0001'); s.adminCommand( { shardcollection : "aaa.foo" , key : { x : 1 } } ); db = s.getDB( "aaa" ); @@ -76,4 +77,4 @@ for (var i = 0; i < s._connections.length; i++) { step("Stop cluster"); s.stop(); step("SUCCESS"); -}
\ No newline at end of file +} diff --git a/src/mongo/shell/shardingtest.js b/src/mongo/shell/shardingtest.js index 2a3119e0bbb..f0fc76a0c61 100644 --- a/src/mongo/shell/shardingtest.js +++ b/src/mongo/shell/shardingtest.js @@ -1144,3 +1144,12 @@ ShardingTest.prototype.restartMongos = function(n) { } }; +/** + * Helper method for setting primary shard of a database and making sure that it was successful. + * Note: first mongos needs to be up. + */ +ShardingTest.prototype.ensurePrimaryShard = function(dbName, shardName) { + var db = this.s0.getDB('admin'); + var res = db.adminCommand({ movePrimary: dbName, to: shardName }); + assert(res.ok || res.errmsg == "it is already the primary", tojson(res)); +}; |