diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2016-09-06 15:56:54 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2016-09-07 11:01:33 -0400 |
commit | 78d90db28d8341f073361c2df7a35acb17cd8f42 (patch) | |
tree | 5e56576f48220afaeb21f316b2654073c57fda5d /jstests/sharding/cursor_valid_after_shard_stepdown.js | |
parent | 5f438283aff7e36bd4d54f46066b2fe3926e599d (diff) | |
download | mongo-78d90db28d8341f073361c2df7a35acb17cd8f42.tar.gz |
SERVER-25978 Do not clear the CollectionShardingState map on stepdown
Diffstat (limited to 'jstests/sharding/cursor_valid_after_shard_stepdown.js')
-rw-r--r-- | jstests/sharding/cursor_valid_after_shard_stepdown.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/jstests/sharding/cursor_valid_after_shard_stepdown.js b/jstests/sharding/cursor_valid_after_shard_stepdown.js new file mode 100644 index 00000000000..c51e7191e3f --- /dev/null +++ b/jstests/sharding/cursor_valid_after_shard_stepdown.js @@ -0,0 +1,42 @@ +(function() { + 'use strict'; + + var st = new ShardingTest({shards: 1, rs: {nodes: 2}}); + + assert.commandWorked(st.s0.adminCommand({enablesharding: 'TestDB'})); + st.ensurePrimaryShard('TestDB', st.shard0.shardName); + assert.commandWorked(st.s0.adminCommand({shardcollection: 'TestDB.TestColl', key: {x: 1}})); + + var db = st.s0.getDB('TestDB'); + var coll = db.TestColl; + + // Insert documents for the test + assert.writeOK(coll.insert({x: 1, value: 'Test value 1'})); + assert.writeOK(coll.insert({x: 2, value: 'Test value 2'})); + + // Establish a cursor on the primary (by not using slaveOk read) + var findCursor = assert.commandWorked(db.runCommand({find: 'TestColl', batchSize: 1})).cursor; + + var shardVersionBeforeStepdown = + assert.commandWorked(st.rs0.getPrimary().adminCommand({getShardVersion: 'TestDB.TestColl'})) + .global; + assert.neq(Timestamp(0, 0), shardVersionBeforeStepdown); + + // Stepdown the primary of the shard and ensure that that cursor can still be read + assert.throws(function() { + assert.commandWorked(st.rs0.getPrimary().adminCommand({replSetStepDown: 60, force: 1})); + }); + + var getMoreCursor = + assert.commandWorked(db.runCommand({getMore: findCursor.id, collection: 'TestColl'})) + .cursor; + assert.eq(0, getMoreCursor.id); + assert.eq(2, getMoreCursor.nextBatch[0].x); + + var shardVersionAfterStepdown = + assert.commandWorked(st.rs0.getPrimary().adminCommand({getShardVersion: 'TestDB.TestColl'})) + .global; + assert.eq(Timestamp(0, 0), shardVersionAfterStepdown); + + st.stop(); +})(); |