diff options
author | Shaun Verch <shaun.verch@mongodb.com> | 2014-03-28 09:57:22 -0400 |
---|---|---|
committer | Shaun Verch <shaun.verch@mongodb.com> | 2014-03-28 13:49:44 -0400 |
commit | 9537c9c5355de719d367914deb1f57bc8c6b5017 (patch) | |
tree | 2925e6c9a509fa9934e6d1ec7f09f075f098dd3e | |
parent | ce4afbc1c211559b33f7fd2145cd7b4120ce9113 (diff) | |
download | mongo-9537c9c5355de719d367914deb1f57bc8c6b5017.tar.gz |
SERVER-13379 Canonicalize shardsvr and configsvr as sharding.clusterRole
(cherry picked from commit 1c2ec3d69bbb5b6ae34f57abf1fabcaf32833a57)
-rw-r--r-- | jstests/libs/config_files/set_shardingrole.json | 5 | ||||
-rw-r--r-- | jstests/sharding/sharding_options.js | 35 | ||||
-rw-r--r-- | src/mongo/db/mongod_options.cpp | 49 |
3 files changed, 70 insertions, 19 deletions
diff --git a/jstests/libs/config_files/set_shardingrole.json b/jstests/libs/config_files/set_shardingrole.json new file mode 100644 index 00000000000..71f92f122db --- /dev/null +++ b/jstests/libs/config_files/set_shardingrole.json @@ -0,0 +1,5 @@ +{ + "sharding" : { + "clusterRole" : "configsvr" + } +} diff --git a/jstests/sharding/sharding_options.js b/jstests/sharding/sharding_options.js index 2147006bcd2..bce2ed70bf4 100644 --- a/jstests/sharding/sharding_options.js +++ b/jstests/sharding/sharding_options.js @@ -29,6 +29,7 @@ function testGetCmdLineOpts(mongoRunnerConfig, expectedResult) { MongoRunner.stopMongod(mongod.port); } +// Move Paranoia jsTest.log("Testing \"moveParanoia\" command line option"); var expectedResult = { "parsed" : { @@ -60,6 +61,40 @@ expectedResult = { }; testGetCmdLineOpts({ config : "jstests/libs/config_files/enable_paranoia.json" }, expectedResult); + + +// Sharding Role +jsTest.log("Testing \"configsvr\" command line option"); +var expectedResult = { + "parsed" : { + "sharding" : { + "clusterRole" : "configsvr" + } + } +}; +testGetCmdLineOpts({ configsvr : "" }, expectedResult); + +jsTest.log("Testing \"shardsvr\" command line option"); +expectedResult = { + "parsed" : { + "sharding" : { + "clusterRole" : "shardsvr" + } + } +}; +testGetCmdLineOpts({ shardsvr : "" }, expectedResult); + +jsTest.log("Testing \"sharding.clusterRole\" config file option"); +expectedResult = { + "parsed" : { + "config" : "jstests/libs/config_files/set_shardingrole.json", + "sharding" : { + "clusterRole" : "configsvr" + } + } +}; +testGetCmdLineOpts({ config : "jstests/libs/config_files/set_shardingrole.json" }, expectedResult); + jsTest.log("Testing with no explicit sharding option setting"); expectedResult = { "parsed" : { } diff --git a/src/mongo/db/mongod_options.cpp b/src/mongo/db/mongod_options.cpp index ddd61111489..7749f16760a 100644 --- a/src/mongo/db/mongod_options.cpp +++ b/src/mongo/db/mongod_options.cpp @@ -332,16 +332,16 @@ namespace mongo { // Sharding Options - sharding_options.addOptionChaining("sharding.configsvr", "configsvr", moe::Switch, + sharding_options.addOptionChaining("configsvr", "configsvr", moe::Switch, "declare this is a config db of a cluster; default port 27019; " "default dir /data/configdb") .setSources(moe::SourceAllLegacy) - .incompatibleWith("sharding.clusterRole"); + .incompatibleWith("shardsvr"); - sharding_options.addOptionChaining("sharding.shardsvr", "shardsvr", moe::Switch, + sharding_options.addOptionChaining("shardsvr", "shardsvr", moe::Switch, "declare this is a shard db of a cluster; default port 27018") .setSources(moe::SourceAllLegacy) - .incompatibleWith("sharding.clusterRole"); + .incompatibleWith("configsvr"); sharding_options.addOptionChaining("sharding.clusterRole", "", moe::String, "Choose what role this mongod has in a sharded cluster. Possible values are:\n" @@ -350,8 +350,6 @@ namespace mongo { " \"shardsvr\": Start this node as a shard server. Starts on port 27018 by " "default.") .setSources(moe::SourceYAMLConfig) - .incompatibleWith("sharding.configsvr") - .incompatibleWith("sharding.shardsvr") .format("(:?configsvr)|(:?shardsvr)", "(configsvr/shardsvr)"); @@ -685,6 +683,30 @@ namespace mongo { } } + // "sharding.clusterRole" comes from the config file, so override it if "configsvr" or + // "shardsvr" are set since those come from the command line. + if (params->count("configsvr")) { + Status ret = params->set("sharding.clusterRole", moe::Value(std::string("configsvr"))); + if (!ret.isOK()) { + return ret; + } + ret = params->remove("configsvr"); + if (!ret.isOK()) { + return ret; + } + } + if (params->count("shardsvr")) { + Status ret = params->set("sharding.clusterRole", moe::Value(std::string("shardsvr"))); + if (!ret.isOK()) { + return ret; + } + ret = params->remove("shardsvr"); + if (!ret.isOK()) { + return ret; + } + } + + return Status::OK(); } @@ -937,16 +959,6 @@ namespace mongo { return Status(ErrorCodes::BadValue, "--cacheSize option not currently supported"); } if (!params.count("net.port")) { - if( params.count("sharding.configsvr") ) { - serverGlobalParams.port = ServerGlobalParams::ConfigServerPort; - } - if( params.count("sharding.shardsvr") ) { - if( params.count("sharding.configsvr") ) { - return Status(ErrorCodes::BadValue, - "can't do --shardsvr and --configsvr at the same time"); - } - serverGlobalParams.port = ServerGlobalParams::ShardServerPort; - } if (params.count("sharding.clusterRole")) { std::string clusterRole = params["sharding.clusterRole"].as<std::string>(); if (clusterRole == "configsvr") { @@ -968,9 +980,8 @@ namespace mongo { return Status(ErrorCodes::BadValue, "bad --port number"); } } - if (params.count("sharding.configsvr") || - (params.count("sharding.clusterRole") && - params["sharding.clusterRole"].as<std::string>() == "configsvr")) { + if (params.count("sharding.clusterRole") && + params["sharding.clusterRole"].as<std::string>() == "configsvr") { serverGlobalParams.configsvr = true; storageGlobalParams.smallfiles = true; // config server implies small files if (replSettings.usingReplSets() || replSettings.master || replSettings.slave) { |