summaryrefslogtreecommitdiff
path: root/jstests/sharding/cursor_valid_after_shard_stepdown.js
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2016-09-06 15:56:54 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2016-09-07 11:01:33 -0400
commit78d90db28d8341f073361c2df7a35acb17cd8f42 (patch)
tree5e56576f48220afaeb21f316b2654073c57fda5d /jstests/sharding/cursor_valid_after_shard_stepdown.js
parent5f438283aff7e36bd4d54f46066b2fe3926e599d (diff)
downloadmongo-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.js42
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();
+})();