summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgregs <greg@10gen.com>2011-09-29 14:47:25 -0400
committergregs <greg@10gen.com>2011-09-30 11:41:52 -0400
commit729ad802c8df1f4537b6d1a2ddcdc9a2b697bb13 (patch)
treedd5fbfc717c34ac7f3adf4c6e94035414721b3a1
parent0b2cd79560d425fd1b86c1db05e598bc400b13e8 (diff)
downloadmongo-729ad802c8df1f4537b6d1a2ddcdc9a2b697bb13.tar.gz
test for recheck of reset shard version SERVER-3889
-rw-r--r--jstests/sharding/reset_shard_version.js38
-rwxr-xr-xshell/servers.js8
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 } );