diff options
author | gregs <greg@10gen.com> | 2011-09-29 14:47:25 -0400 |
---|---|---|
committer | gregs <greg@10gen.com> | 2011-09-30 11:41:52 -0400 |
commit | 729ad802c8df1f4537b6d1a2ddcdc9a2b697bb13 (patch) | |
tree | dd5fbfc717c34ac7f3adf4c6e94035414721b3a1 | |
parent | 0b2cd79560d425fd1b86c1db05e598bc400b13e8 (diff) | |
download | mongo-729ad802c8df1f4537b6d1a2ddcdc9a2b697bb13.tar.gz |
test for recheck of reset shard version SERVER-3889
-rw-r--r-- | jstests/sharding/reset_shard_version.js | 38 | ||||
-rwxr-xr-x | shell/servers.js | 8 |
2 files changed, 44 insertions, 2 deletions
diff --git a/jstests/sharding/reset_shard_version.js b/jstests/sharding/reset_shard_version.js new file mode 100644 index 00000000000..79338d44a4f --- /dev/null +++ b/jstests/sharding/reset_shard_version.js @@ -0,0 +1,38 @@ +// Tests whether a reset sharding version triggers errors + +jsTestLog( "Starting sharded cluster..." ) + +var st = new ShardingTest( { shards : 1, mongos : 2 } ) + +var mongosA = st.s0 +var mongosB = st.s1 + +var collA = mongosA.getCollection( jsTestName() + ".coll" ) +collA.drop() +var collB = mongosB.getCollection( "" + collA ) + +st.shardColl( collA, { _id : 1 }, false ) + +jsTestLog( "Inserting data..." ) + +// Insert some data +for ( var i = 0; i < 100; i++ ) { + collA.insert( { _id : i } ) +} + +jsTestLog( "Setting connection versions on both mongoses..." ) + +assert.eq( collA.find().itcount(), 100 ) +assert.eq( collB.find().itcount(), 100 ) + +jsTestLog( "Resetting connection version on shard..." ) + +var admin = st.shard0.getDB( "admin" ) +printjson( admin.runCommand( { + setShardVersion : "" + collA, version : new Timestamp( 0, 0 ), configdb : st._configDB, serverID : new ObjectId(), + authoritative : true } ) ) + +jsTestLog( "Querying with version reset..." ) + +// This will cause a version check +printjson( collA.findOne() )
\ No newline at end of file diff --git a/shell/servers.js b/shell/servers.js index 967d54f2797..683391cb44b 100755 --- a/shell/servers.js +++ b/shell/servers.js @@ -762,8 +762,8 @@ ShardingTest.prototype.isSharded = function( collName ){ ShardingTest.prototype.shardGo = function( collName , key , split , move , dbName ){ - split = split || key; - move = move || split; + split = ( split != false ? ( split || key ) : split ) + move = ( split != false && move != false ? ( move || split ) : false ) if( collName.getDB ) dbName = "" + collName.getDB() @@ -784,12 +784,16 @@ ShardingTest.prototype.shardGo = function( collName , key , split , move , dbNam assert( false ) } + if( split == false ) return + result = this.s.adminCommand( { split : c , middle : split } ); if( ! result.ok ){ printjson( result ) assert( false ) } + if( move == false ) return + var result = null for( var i = 0; i < 5; i++ ){ result = this.s.adminCommand( { movechunk : c , find : move , to : this.getOther( this.getServer( dbName ) ).name } ); |