summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun Verch <shaun.verch@mongodb.com>2014-03-28 09:57:22 -0400
committerShaun Verch <shaun.verch@mongodb.com>2014-03-28 13:49:44 -0400
commit9537c9c5355de719d367914deb1f57bc8c6b5017 (patch)
tree2925e6c9a509fa9934e6d1ec7f09f075f098dd3e
parentce4afbc1c211559b33f7fd2145cd7b4120ce9113 (diff)
downloadmongo-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.json5
-rw-r--r--jstests/sharding/sharding_options.js35
-rw-r--r--src/mongo/db/mongod_options.cpp49
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) {