summaryrefslogtreecommitdiff
path: root/jstests/replsets/reconfig_tags.js
diff options
context:
space:
mode:
authormatt dannenberg <matt.dannenberg@10gen.com>2013-09-20 16:47:28 -0400
committermatt dannenberg <matt.dannenberg@10gen.com>2013-09-24 15:02:53 -0400
commit0be5ade7cdccccaef2f11b31819fd671c7476c71 (patch)
tree23a67b5b45e557f25a53362afcddc421c51936a4 /jstests/replsets/reconfig_tags.js
parentddb216a374b3daf5c2ee438803c6bf2ff7290fe4 (diff)
downloadmongo-0be5ade7cdccccaef2f11b31819fd671c7476c71.tar.gz
SERVER-10823 update member configs properly on tags-only reconfigs
fixes problems caused by SERVER-6376
Diffstat (limited to 'jstests/replsets/reconfig_tags.js')
-rw-r--r--jstests/replsets/reconfig_tags.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/jstests/replsets/reconfig_tags.js b/jstests/replsets/reconfig_tags.js
new file mode 100644
index 00000000000..3fa4cb71041
--- /dev/null
+++ b/jstests/replsets/reconfig_tags.js
@@ -0,0 +1,42 @@
+// test that reconfigging only tag changes is properly reflected in isMaster
+
+var replTest = new ReplSetTest({ nodes: 2 });
+replTest.startSet({ oplogSize: 10 });
+replTest.initiate();
+replTest.awaitSecondaryNodes();
+
+// Tag primary with { dc: 'ny', tag: 'one' }, secondary with { dc: 'ny', tag: 'two' }
+var primary = replTest.getPrimary();
+var secondary = replTest.getSecondary();
+var rsConfig = primary.getDB("local").system.replset.findOne();
+jsTest.log('got rsconf ' + tojson(rsConfig));
+rsConfig.members.forEach(function(member) {
+ if (member.host == primary.host) {
+ member.tags = { dc: 'ny', tag: 'one' };
+ } else {
+ member.tags = { dc: 'ny', tag: 'two' };
+ }
+});
+
+rsConfig.version++;
+
+jsTest.log('new rsconf ' + tojson(rsConfig));
+
+try {
+ var res = primary.adminCommand({ replSetReconfig: rsConfig });
+ jsTest.log('reconfig res: ' + tojson(res)); // Should not see this
+}
+catch(e) {
+ jsTest.log('replSetReconfig error: ' + e);
+}
+
+replTest.awaitSecondaryNodes();
+
+var testDB = primary.getDB('test');
+
+var newConn = new Mongo(primary.host);
+var isMaster = newConn.adminCommand({ isMaster: 1 });
+assert(isMaster.tags != null, 'isMaster: ' + tojson(isMaster));
+
+print('success: ' + tojson(isMaster));
+replTest.stopSet();