From 3007bd925db455d2ea8d62f98137b39820506837 Mon Sep 17 00:00:00 2001 From: Kristina Date: Fri, 24 Dec 2010 23:55:59 -0500 Subject: return err for w option on config servers --- jstests/sharding/shard_insert_getlasterror_w2.js | 76 ++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 jstests/sharding/shard_insert_getlasterror_w2.js (limited to 'jstests/sharding/shard_insert_getlasterror_w2.js') diff --git a/jstests/sharding/shard_insert_getlasterror_w2.js b/jstests/sharding/shard_insert_getlasterror_w2.js new file mode 100644 index 00000000000..e9581ba376d --- /dev/null +++ b/jstests/sharding/shard_insert_getlasterror_w2.js @@ -0,0 +1,76 @@ +// replica set as solo shard +// getLastError(2) fails on about every 170 inserts on my Macbook laptop -Tony +// TODO: Add assertion code that catches hang + +load('jstests/libs/grid.js') + +function go() { + +var N = 2000 + +// ~1KB string +var Text = '' +for (var i = 0; i < 40; i++) + Text += 'abcdefghijklmnopqrstuvwxyz' + +// Create replica set with 3 servers +var repset1 = new ReplicaSet('repset1', 3) .begin() + +// Add data to it +var conn1a = repset1.getMaster() +var db1a = conn1a.getDB('test') +for (var i = 0; i < N; i++) { + db1a['foo'].insert({x: i, text: Text}) + db1a.getLastError(2) // wait to be copied to at least one secondary +} + +// Create 3 sharding config servers +var configsetSpec = new ConfigSet(3) +var configsetConns = configsetSpec.begin() + +// Create sharding router (mongos) +var routerSpec = new Router(configsetSpec) +var routerConn = routerSpec.begin() +var dba = routerConn.getDB('admin') +var db = routerConn.getDB('test') + +// Add repset1 as only shard +addShard (routerConn, repset1.getURL()) + +// Enable sharding on test db and its collection foo +enableSharding (routerConn, 'test') +db['foo'].ensureIndex({x: 1}) +shardCollection (routerConn, 'test', 'foo', {x: 1}) + +sleep(30000) +printjson (db['foo'].stats()) +dba.printShardingStatus() +printjson (db['foo'].count()) + +// Add more data +for (var i = N; i < 2*N; i++) { + db['foo'].insert({x: i, text: Text}) + var x = db.getLastErrorObj(2, 30000) // wait to be copied to at least one secondary + if (i % 30 == 0) print(i) + // if config is included, discard its error + if (x.shards && x.shards.length == 2) { + assert.eq(x.errs.length, 1); + assert.eq(x.err, "norepl"); + } + else { + if (i % 30 == 0 || x.err != null) printjson(x); + assert.eq(x.err, null, tojson(x)); + } +} +// BUG: above getLastError fails on about every 170 inserts + +// Done +routerSpec.end() +configsetSpec.end() +repset1.stopSet() + +print('shard_insert_getlasterror_w2.js SUCCESS') +} + +//Uncomment below to execute +go() -- cgit v1.2.1