1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
s = new ShardingTest( "error1" , 2 , 1 , 1 );
s.stopBalancer()
s.adminCommand( { enablesharding : "test" } );
a = s._connections[0].getDB( "test" );
b = s._connections[1].getDB( "test" );
// ---- simple getLastError ----
db = s.getDB( "test" );
db.foo.insert( { _id : 1 } );
assert.isnull( db.getLastError() , "gle 1" );
db.foo.insert( { _id : 1 } );
assert( db.getLastError() , "gle21" );
assert( db.getLastError() , "gle22" );
// --- sharded getlasterror
s.adminCommand( { shardcollection : "test.foo2" , key : { num : 1 } } );
db.foo2.save( { _id : 1 , num : 5 } );
db.foo2.save( { _id : 2 , num : 10 } );
db.foo2.save( { _id : 3 , num : 15 } );
db.foo2.save( { _id : 4 , num : 20 } );
s.adminCommand( { split : "test.foo2" , middle : { num : 10 } } );
s.adminCommand( { movechunk : "test.foo2" , find : { num : 20 } , to : s.getOther( s.getServer( "test" ) ).name, _waitForDelete : true } );
print( "a: " + a.foo2.count() );
print( "b: " + b.foo2.count() );
assert( a.foo2.count() > 0 && a.foo2.count() < 4 , "se1" );
assert( b.foo2.count() > 0 && b.foo2.count() < 4 , "se2" );
assert.eq( 4 , db.foo2.count() , "se3" );
db.foo2.save( { _id : 5 , num : 25 } );
assert( ! db.getLastError() , "se3.5" );
s.sync();
assert.eq( 5 , db.foo2.count() , "se4" );
db.foo2.insert( { _id : 5 , num : 30 } );
assert( db.getLastError() , "se5" );
assert( db.getLastError() , "se6" );
assert.eq( 5 , db.foo2.count() , "se5" );
// assert in mongos
s.adminCommand( { shardcollection : "test.foo3" , key : { num : 1 } } );
assert.isnull(db.getLastError() , "gle C1" );
db.foo3.insert({}); //this fails with no shard key error
assert(db.getLastError() , "gle C2a" );
assert(db.getLastError() , "gle C2b" );
db.foo3.insert({num:1});
assert.isnull(db.getLastError() , "gle C3a" );
// ----
s.stop();
|