diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2016-03-30 14:30:27 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2016-03-30 16:47:02 -0400 |
commit | 2a09ba86b4812c37ea167328dbf528bd1c245b4e (patch) | |
tree | af7b05f068d1a7c8eeb234c919d3d1758555bd70 /src | |
parent | e47ce9f899d09eba1cbdb45cc433786f5510e41a (diff) | |
download | mongo-2a09ba86b4812c37ea167328dbf528bd1c245b4e.tar.gz |
SERVER-23435 Sharded count command should fail at invalid collection name
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/s/move_chunk_command.cpp | 2 | ||||
-rw-r--r-- | src/mongo/s/commands/cluster_count_cmd.cpp | 4 | ||||
-rw-r--r-- | src/mongo/s/commands/cluster_explain_cmd.cpp | 12 |
3 files changed, 11 insertions, 7 deletions
diff --git a/src/mongo/db/s/move_chunk_command.cpp b/src/mongo/db/s/move_chunk_command.cpp index 2f1533ef5fc..48dc6285345 100644 --- a/src/mongo/db/s/move_chunk_command.cpp +++ b/src/mongo/db/s/move_chunk_command.cpp @@ -171,7 +171,7 @@ public: std::string& errmsg, BSONObjBuilder& result) override { const NamespaceString nss = NamespaceString(parseNs(dbname, cmdObj)); - uassert(ErrorCodes::InvalidOptions, "need to specify a valid namespace", nss.isValid()); + uassert(ErrorCodes::InvalidNamespace, "need to specify a valid namespace", nss.isValid()); MoveChunkRequest moveChunkRequest = uassertStatusOK(MoveChunkRequest::createFromCommand(nss, cmdObj)); diff --git a/src/mongo/s/commands/cluster_count_cmd.cpp b/src/mongo/s/commands/cluster_count_cmd.cpp index 70a678b987b..fa20f4f1447 100644 --- a/src/mongo/s/commands/cluster_count_cmd.cpp +++ b/src/mongo/s/commands/cluster_count_cmd.cpp @@ -195,6 +195,10 @@ public: const rpc::ServerSelectionMetadata& serverSelectionMetadata, BSONObjBuilder* out) const { const NamespaceString nss(parseNs(dbname, cmdObj)); + if (!nss.isValid()) { + return Status{ErrorCodes::InvalidNamespace, + str::stream() << "Invalid collection name: " << nss.ns()}; + } // Extract the targeting query. BSONObj targetingQuery; diff --git a/src/mongo/s/commands/cluster_explain_cmd.cpp b/src/mongo/s/commands/cluster_explain_cmd.cpp index 5ddada38664..2801984c8c7 100644 --- a/src/mongo/s/commands/cluster_explain_cmd.cpp +++ b/src/mongo/s/commands/cluster_explain_cmd.cpp @@ -56,13 +56,13 @@ class ClusterExplainCmd : public Command { public: ClusterExplainCmd() : Command("explain") {} - /** * Running an explain on a secondary requires explicitly setting slaveOk. */ virtual bool slaveOk() const { return false; } + virtual bool slaveOverrideOk() const { return true; } @@ -120,11 +120,11 @@ public: const std::string cmdName = explainObj.firstElementFieldName(); Command* commToExplain = Command::findCommand(cmdName); - if (NULL == commToExplain) { - mongoutils::str::stream ss; - ss << "Explain failed due to unknown command: " << cmdName; - Status explainStatus(ErrorCodes::CommandNotFound, ss); - return appendCommandStatus(result, explainStatus); + if (!commToExplain) { + return appendCommandStatus( + result, + Status{ErrorCodes::CommandNotFound, + str::stream() << "Explain failed due to unknown command: " << cmdName}); } auto readPref = |