summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2016-03-29 14:44:39 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2016-03-29 17:16:15 -0400
commit2cc6e175738a5e18635c28f2bd68c1d6f679e0fc (patch)
tree438c196a69ae55322840d3528dd1e6b1dc370088
parente9638fa4456bbb4fd2492f84c6ec82e37dded8e2 (diff)
downloadmongo-2cc6e175738a5e18635c28f2bd68c1d6f679e0fc.tar.gz
SERVER-23405 Get rid of Command::getStatusFromCommand
-rw-r--r--src/mongo/db/auth/authz_manager_external_state_s.cpp10
-rw-r--r--src/mongo/db/auth/user_cache_invalidator_job.cpp3
-rw-r--r--src/mongo/db/commands.cpp19
-rw-r--r--src/mongo/db/commands.h13
-rw-r--r--src/mongo/db/commands/copydb_start_commands.cpp3
-rw-r--r--src/mongo/db/commands/write_commands/batch_executor.cpp3
-rw-r--r--src/mongo/db/dbdirectclient.cpp6
-rw-r--r--src/mongo/db/instance.cpp3
-rw-r--r--src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp10
-rw-r--r--src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp15
-rw-r--r--src/mongo/s/chunk.cpp2
-rw-r--r--src/mongo/s/chunk_manager.cpp6
-rw-r--r--src/mongo/s/commands/cluster_move_primary_cmd.cpp1
-rw-r--r--src/mongo/s/commands/commands_public.cpp11
14 files changed, 50 insertions, 55 deletions
diff --git a/src/mongo/db/auth/authz_manager_external_state_s.cpp b/src/mongo/db/auth/authz_manager_external_state_s.cpp
index df94ff8bcc2..c86e3cf30aa 100644
--- a/src/mongo/db/auth/authz_manager_external_state_s.cpp
+++ b/src/mongo/db/auth/authz_manager_external_state_s.cpp
@@ -39,8 +39,8 @@
#include "mongo/db/auth/authorization_manager_global.h"
#include "mongo/db/auth/authz_session_external_state_s.h"
#include "mongo/db/auth/user_name.h"
-#include "mongo/db/commands.h"
#include "mongo/db/jsobj.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/s/catalog/catalog_manager.h"
#include "mongo/s/grid.h"
#include "mongo/stdx/memory.h"
@@ -73,7 +73,7 @@ Status AuthzManagerExternalStateMongos::getStoredAuthorizationVersion(OperationC
->runUserManagementReadCommand(txn, "admin", getParameterCmd, &builder);
BSONObj cmdResult = builder.obj();
if (!ok) {
- return Command::getStatusFromCommandResult(cmdResult);
+ return getStatusFromCommandResult(cmdResult);
}
BSONElement versionElement = cmdResult[authSchemaVersionServerParameter];
@@ -99,7 +99,7 @@ Status AuthzManagerExternalStateMongos::getUserDescription(OperationContext* txn
->runUserManagementReadCommand(txn, "admin", usersInfoCmd, &builder);
BSONObj cmdResult = builder.obj();
if (!ok) {
- return Command::getStatusFromCommandResult(cmdResult);
+ return getStatusFromCommandResult(cmdResult);
}
std::vector<BSONElement> foundUsers = cmdResult["users"].Array();
@@ -130,7 +130,7 @@ Status AuthzManagerExternalStateMongos::getRoleDescription(OperationContext* txn
->runUserManagementReadCommand(txn, "admin", rolesInfoCmd, &builder);
BSONObj cmdResult = builder.obj();
if (!ok) {
- return Command::getStatusFromCommandResult(cmdResult);
+ return getStatusFromCommandResult(cmdResult);
}
std::vector<BSONElement> foundRoles = cmdResult["roles"].Array();
@@ -159,7 +159,7 @@ Status AuthzManagerExternalStateMongos::getRoleDescriptionsForDB(OperationContex
grid.catalogManager(txn)->runUserManagementReadCommand(txn, dbname, rolesInfoCmd, &builder);
BSONObj cmdResult = builder.obj();
if (!ok) {
- return Command::getStatusFromCommandResult(cmdResult);
+ return getStatusFromCommandResult(cmdResult);
}
for (BSONObjIterator it(cmdResult["roles"].Obj()); it.more(); it.next()) {
result->push_back((*it).Obj().getOwned());
diff --git a/src/mongo/db/auth/user_cache_invalidator_job.cpp b/src/mongo/db/auth/user_cache_invalidator_job.cpp
index 9d8bf0ad3ca..cda52569f1f 100644
--- a/src/mongo/db/auth/user_cache_invalidator_job.cpp
+++ b/src/mongo/db/auth/user_cache_invalidator_job.cpp
@@ -40,6 +40,7 @@
#include "mongo/db/client.h"
#include "mongo/db/commands.h"
#include "mongo/db/server_parameters.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/s/catalog/catalog_manager.h"
#include "mongo/s/grid.h"
#include "mongo/stdx/mutex.h"
@@ -95,7 +96,7 @@ StatusWith<OID> getCurrentCacheGeneration(OperationContext* txn) {
const bool ok = grid.catalogManager(txn)->runUserManagementReadCommand(
txn, "admin", BSON("_getUserCacheGeneration" << 1), &result);
if (!ok) {
- return Command::getStatusFromCommandResult(result.obj());
+ return getStatusFromCommandResult(result.obj());
}
return result.obj()["cacheGeneration"].OID();
} catch (const DBException& e) {
diff --git a/src/mongo/db/commands.cpp b/src/mongo/db/commands.cpp
index 8590039041d..6bfe0027d9a 100644
--- a/src/mongo/db/commands.cpp
+++ b/src/mongo/db/commands.cpp
@@ -1,8 +1,5 @@
-/* commands.cpp
- db "commands" (sent via db.$cmd.findOne(...))
- */
-
-/* Copyright 2009 10gen Inc.
+/**
+ * Copyright (C) 2009-2016 MongoDB Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
@@ -50,7 +47,6 @@
#include "mongo/db/jsobj.h"
#include "mongo/db/namespace_string.h"
#include "mongo/db/server_parameters.h"
-#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/rpc/metadata.h"
#include "mongo/s/stale_exception.h"
#include "mongo/s/write_ops/wc_error_detail.h"
@@ -60,7 +56,6 @@ namespace mongo {
using std::string;
using std::stringstream;
-using std::endl;
using logger::LogComponent;
@@ -111,7 +106,7 @@ string Command::parseNsCollectionRequired(const string& dbname, const BSONObj& c
#if defined(CLC)
DEV if (mongoutils::str::startsWith(coll, dbname + '.')) {
log() << "DEBUG parseNs Command's collection name looks like it includes the db name\n"
- << dbname << '\n' << coll << '\n' << cmdObj.toString() << endl;
+ << dbname << '\n' << coll << '\n' << cmdObj.toString();
dassert(false);
}
#endif
@@ -206,7 +201,7 @@ Command::Command(StringData _name, bool web, StringData oldName)
_commandsByBestName = new CommandMap();
Command*& c = (*_commands)[name];
if (c)
- log() << "warning: 2 commands with name: " << _name << endl;
+ log() << "warning: 2 commands with name: " << _name;
c = this;
(*_commandsByBestName)[name] = this;
@@ -262,10 +257,6 @@ void Command::appendCommandWCStatus(BSONObjBuilder& result, const Status& status
}
}
-Status Command::getStatusFromCommandResult(const BSONObj& result) {
- return mongo::getStatusFromCommandResult(result);
-}
-
Status Command::parseCommandCursorOptions(const BSONObj& cmdObj,
long long defaultBatchSize,
long long* batchSize) {
@@ -332,7 +323,7 @@ BSONObj Command::getRedactedCopyForLogging(const BSONObj& cmdObj) {
void Command::logIfSlow(const Timer& timer, const string& msg) {
int ms = timer.millis();
if (ms > serverGlobalParams.slowMS) {
- log() << msg << " took " << ms << " ms." << endl;
+ log() << msg << " took " << ms << " ms.";
}
}
diff --git a/src/mongo/db/commands.h b/src/mongo/db/commands.h
index 1112094db7a..1ad7967a6f8 100644
--- a/src/mongo/db/commands.h
+++ b/src/mongo/db/commands.h
@@ -260,14 +260,6 @@ protected:
fassertFailed(16940);
}
- BSONObj getQuery(const BSONObj& cmdObj) {
- if (cmdObj["query"].type() == Object)
- return cmdObj["query"].embeddedObject();
- if (cmdObj["q"].type() == Object)
- return cmdObj["q"].embeddedObject();
- return BSONObj();
- }
-
static void logIfSlow(const Timer& cmdTimer, const std::string& msg);
static CommandMap* _commands;
@@ -331,11 +323,6 @@ public:
// @return s.isOK()
static bool appendCommandStatus(BSONObjBuilder& result, const Status& status);
- // Converts "result" into a Status object. The input is expected to be the object returned
- // by running a command. Returns ErrorCodes::CommandResultSchemaViolation if "result" does
- // not look like the result of a command.
- static Status getStatusFromCommandResult(const BSONObj& result);
-
/**
* Parses cursor options from the command request object "cmdObj". Used by commands that
* take cursor options. The only cursor option currently supported is "cursor.batchSize".
diff --git a/src/mongo/db/commands/copydb_start_commands.cpp b/src/mongo/db/commands/copydb_start_commands.cpp
index 95d5c9499fe..feb96a9552a 100644
--- a/src/mongo/db/commands/copydb_start_commands.cpp
+++ b/src/mongo/db/commands/copydb_start_commands.cpp
@@ -44,6 +44,7 @@
#include "mongo/db/commands.h"
#include "mongo/db/commands/copydb.h"
#include "mongo/db/jsobj.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/util/log.h"
namespace mongo {
@@ -201,7 +202,7 @@ public:
if (!authConn->runCommand(
fromDb, BSON("saslStart" << 1 << mechanismElement << payloadElement), ret)) {
authConn.reset();
- return appendCommandStatus(result, Command::getStatusFromCommandResult(ret));
+ return appendCommandStatus(result, getStatusFromCommandResult(ret));
}
result.appendElements(ret);
diff --git a/src/mongo/db/commands/write_commands/batch_executor.cpp b/src/mongo/db/commands/write_commands/batch_executor.cpp
index 1fa931d239b..58ea6aa6d1e 100644
--- a/src/mongo/db/commands/write_commands/batch_executor.cpp
+++ b/src/mongo/db/commands/write_commands/batch_executor.cpp
@@ -72,6 +72,7 @@
#include "mongo/db/stats/counters.h"
#include "mongo/db/stats/top.h"
#include "mongo/db/write_concern.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/s/shard_key_pattern.h"
#include "mongo/s/stale_exception.h"
#include "mongo/s/write_ops/batched_upsert_detail.h"
@@ -1020,7 +1021,7 @@ static void singleCreateIndex(OperationContext* txn,
createIndexesCmd->run(txn, ns.db().toString(), cmd, 0, errmsg, resultBuilder);
Command::appendCommandStatus(resultBuilder, success, errmsg);
BSONObj cmdResult = resultBuilder.done();
- uassertStatusOK(Command::getStatusFromCommandResult(cmdResult));
+ uassertStatusOK(getStatusFromCommandResult(cmdResult));
result->getStats().n =
cmdResult["numIndexesAfter"].numberInt() - cmdResult["numIndexesBefore"].numberInt();
}
diff --git a/src/mongo/db/dbdirectclient.cpp b/src/mongo/db/dbdirectclient.cpp
index ed642c3a4b4..085291042f5 100644
--- a/src/mongo/db/dbdirectclient.cpp
+++ b/src/mongo/db/dbdirectclient.cpp
@@ -28,6 +28,8 @@
#define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kDefault
+#include "mongo/platform/basic.h"
+
#include "mongo/db/dbdirectclient.h"
#include "mongo/db/client.h"
@@ -36,12 +38,12 @@
#include "mongo/db/lasterror.h"
#include "mongo/db/operation_context.h"
#include "mongo/db/wire_version.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/util/log.h"
namespace mongo {
using std::unique_ptr;
-using std::endl;
using std::string;
// Called from scripting/engine.cpp and scripting/v8_db.cpp.
@@ -174,7 +176,7 @@ unsigned long long DBDirectClient::count(
bool runRetval = countCmd->run(_txn, dbname, cmdObj, options, errmsg, result);
if (!runRetval) {
Command::appendCommandStatus(result, runRetval, errmsg);
- Status commandStatus = Command::getStatusFromCommandResult(result.obj());
+ Status commandStatus = getStatusFromCommandResult(result.obj());
invariant(!commandStatus.isOK());
uassertStatusOK(commandStatus);
}
diff --git a/src/mongo/db/instance.cpp b/src/mongo/db/instance.cpp
index 9238fd5a48a..3e837b801a9 100644
--- a/src/mongo/db/instance.cpp
+++ b/src/mongo/db/instance.cpp
@@ -91,6 +91,7 @@
#include "mongo/platform/process_id.h"
#include "mongo/rpc/command_reply_builder.h"
#include "mongo/rpc/command_request.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/rpc/legacy_reply.h"
#include "mongo/rpc/legacy_reply_builder.h"
#include "mongo/rpc/legacy_request.h"
@@ -1142,7 +1143,7 @@ static void insertSystemIndexes(OperationContext* txn, DbMessage& d, CurOp& curO
Command::execCommand(txn, createIndexesCmd, cmdRequest, &cmdReplyBuilder);
auto cmdReplyMsg = cmdReplyBuilder.done();
rpc::LegacyReply cmdReply{&cmdReplyMsg};
- uassertStatusOK(Command::getStatusFromCommandResult(cmdReply.getCommandReply()));
+ uassertStatusOK(getStatusFromCommandResult(cmdReply.getCommandReply()));
} catch (const DBException& ex) {
LastError::get(txn->getClient()).setLastError(ex.getCode(), ex.getInfo().msg);
curOp.debug().exceptionInfo = ex.getInfo();
diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp
index 7934cffb8ab..98617646a5e 100644
--- a/src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp
+++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp
@@ -855,7 +855,7 @@ bool CatalogManagerReplicaSet::runUserManagementWriteCommand(OperationContext* t
}
result->appendElements(response.getValue());
- return Command::getStatusFromCommandResult(response.getValue()).isOK();
+ return getStatusFromCommandResult(response.getValue()).isOK();
}
bool CatalogManagerReplicaSet::runReadCommandForTest(OperationContext* txn,
@@ -870,7 +870,7 @@ bool CatalogManagerReplicaSet::runReadCommandForTest(OperationContext* txn,
txn, kConfigReadSelector, dbname, cmdBuilder.done());
if (resultStatus.isOK()) {
result->appendElements(resultStatus.getValue());
- return Command::getStatusFromCommandResult(resultStatus.getValue()).isOK();
+ return getStatusFromCommandResult(resultStatus.getValue()).isOK();
}
return Command::appendCommandStatus(*result, resultStatus.getStatus());
@@ -884,7 +884,7 @@ bool CatalogManagerReplicaSet::runUserManagementReadCommand(OperationContext* tx
txn, kConfigPrimaryPreferredSelector, dbname, cmdObj);
if (resultStatus.isOK()) {
result->appendElements(resultStatus.getValue());
- return Command::getStatusFromCommandResult(resultStatus.getValue()).isOK();
+ return getStatusFromCommandResult(resultStatus.getValue()).isOK();
}
return Command::appendCommandStatus(*result, resultStatus.getStatus());
@@ -905,7 +905,7 @@ Status CatalogManagerReplicaSet::applyChunkOpsDeprecated(OperationContext* txn,
return response.getStatus();
}
- Status status = Command::getStatusFromCommandResult(response.getValue());
+ Status status = getStatusFromCommandResult(response.getValue());
if (MONGO_FAIL_POINT(failApplyChunkOps)) {
status = Status(ErrorCodes::InternalError, "Failpoint 'failApplyChunkOps' generated error");
@@ -1241,7 +1241,7 @@ Status CatalogManagerReplicaSet::_createCappedConfigCollection(OperationContext*
return result.getStatus();
}
- return Command::getStatusFromCommandResult(result.getValue());
+ return getStatusFromCommandResult(result.getValue());
}
StatusWith<long long> CatalogManagerReplicaSet::_runCountCommandOnConfig(OperationContext* txn,
diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp
index d62025ef97b..43f65416858 100644
--- a/src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp
+++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp
@@ -38,6 +38,7 @@
#include "mongo/db/query/lite_parsed_query.h"
#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/rpc/metadata/repl_set_metadata.h"
#include "mongo/rpc/metadata/server_selection_metadata.h"
#include "mongo/s/catalog/dist_lock_manager_mock.h"
@@ -636,7 +637,7 @@ TEST_F(CatalogManagerReplSetTest, RunUserManagementReadCommandUnsatisfiedReadPre
operationContext(), "test", BSON("usersInfo" << 1), &responseBuilder);
ASSERT_FALSE(ok);
- Status commandStatus = Command::getStatusFromCommandResult(responseBuilder.obj());
+ Status commandStatus = getStatusFromCommandResult(responseBuilder.obj());
ASSERT_EQUALS(ErrorCodes::FailedToSatisfyReadPreference, commandStatus);
}
@@ -653,7 +654,7 @@ TEST_F(CatalogManagerReplSetTest, RunUserManagementWriteCommandSuccess) {
&responseBuilder);
ASSERT_FALSE(ok);
- Status commandStatus = Command::getStatusFromCommandResult(responseBuilder.obj());
+ Status commandStatus = getStatusFromCommandResult(responseBuilder.obj());
ASSERT_EQUALS(ErrorCodes::UserNotFound, commandStatus);
});
@@ -693,7 +694,7 @@ TEST_F(CatalogManagerReplSetTest, RunUserManagementWriteCommandInvalidWriteConce
&responseBuilder);
ASSERT_FALSE(ok);
- Status commandStatus = Command::getStatusFromCommandResult(responseBuilder.obj());
+ Status commandStatus = getStatusFromCommandResult(responseBuilder.obj());
ASSERT_EQUALS(ErrorCodes::InvalidOptions, commandStatus);
ASSERT_STRING_CONTAINS(commandStatus.reason(), "Invalid replication write concern");
}
@@ -726,7 +727,7 @@ TEST_F(CatalogManagerReplSetTest, RunUserManagementWriteCommandRewriteWriteConce
&responseBuilder);
ASSERT_FALSE(ok);
- Status commandStatus = Command::getStatusFromCommandResult(responseBuilder.obj());
+ Status commandStatus = getStatusFromCommandResult(responseBuilder.obj());
ASSERT_EQUALS(ErrorCodes::UserNotFound, commandStatus);
});
@@ -764,7 +765,7 @@ TEST_F(CatalogManagerReplSetTest, RunUserManagementWriteCommandNotMaster) {
&responseBuilder);
ASSERT_FALSE(ok);
- Status commandStatus = Command::getStatusFromCommandResult(responseBuilder.obj());
+ Status commandStatus = getStatusFromCommandResult(responseBuilder.obj());
ASSERT_EQUALS(ErrorCodes::NotMaster, commandStatus);
});
@@ -797,7 +798,7 @@ TEST_F(CatalogManagerReplSetTest, RunUserManagementWriteCommandNotMasterRetrySuc
&responseBuilder);
ASSERT_TRUE(ok);
- Status commandStatus = Command::getStatusFromCommandResult(responseBuilder.obj());
+ Status commandStatus = getStatusFromCommandResult(responseBuilder.obj());
ASSERT_OK(commandStatus);
});
@@ -2556,7 +2557,7 @@ TEST_F(CatalogManagerReplSetTest, RetryOnReadCommandNetworkErrorFailsAtMaxRetry)
auto ok = getCatalogManagerReplicaSet()->runReadCommandForTest(
operationContext(), "test", BSON("dummy" << 1), &responseBuilder);
ASSERT_FALSE(ok);
- auto status = Command::getStatusFromCommandResult(responseBuilder.obj());
+ auto status = getStatusFromCommandResult(responseBuilder.obj());
ASSERT_EQ(ErrorCodes::HostUnreachable, status.code());
});
diff --git a/src/mongo/s/chunk.cpp b/src/mongo/s/chunk.cpp
index 97a0f5ec988..a824ab0b80a 100644
--- a/src/mongo/s/chunk.cpp
+++ b/src/mongo/s/chunk.cpp
@@ -321,7 +321,7 @@ void Chunk::pickSplitVector(OperationContext* txn,
cmdObj);
uassertStatusOK(result.getStatus());
- uassertStatusOK(Command::getStatusFromCommandResult(result.getValue()));
+ uassertStatusOK(getStatusFromCommandResult(result.getValue()));
BSONObjIterator it(result.getValue().getObjectField("splitKeys"));
while (it.more()) {
diff --git a/src/mongo/s/chunk_manager.cpp b/src/mongo/s/chunk_manager.cpp
index fcb21b5002c..0d6cd212273 100644
--- a/src/mongo/s/chunk_manager.cpp
+++ b/src/mongo/s/chunk_manager.cpp
@@ -37,20 +37,20 @@
#include <set>
#include "mongo/bson/util/bson_extract.h"
+#include "mongo/client/read_preference.h"
#include "mongo/client/remote_command_targeter.h"
-#include "mongo/db/commands.h"
#include "mongo/db/matcher/extensions_callback_noop.h"
#include "mongo/db/namespace_string.h"
#include "mongo/db/query/index_bounds_builder.h"
#include "mongo/db/query/query_planner.h"
#include "mongo/db/query/query_planner_common.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/s/catalog/catalog_cache.h"
#include "mongo/s/catalog/catalog_manager.h"
#include "mongo/s/catalog/type_chunk.h"
#include "mongo/s/catalog/type_collection.h"
#include "mongo/s/chunk.h"
#include "mongo/s/chunk_diff.h"
-#include "mongo/s/client/shard_connection.h"
#include "mongo/s/client/shard_registry.h"
#include "mongo/s/config.h"
#include "mongo/s/grid.h"
@@ -367,7 +367,7 @@ void ChunkManager::calcInitSplitsAndShards(OperationContext* txn,
long long numObjects = 0;
uassertStatusOK(result.getStatus());
- uassertStatusOK(Command::getStatusFromCommandResult(result.getValue()));
+ uassertStatusOK(getStatusFromCommandResult(result.getValue()));
uassertStatusOK(bsonExtractIntegerField(result.getValue(), "n", &numObjects));
if (numObjects > 0)
diff --git a/src/mongo/s/commands/cluster_move_primary_cmd.cpp b/src/mongo/s/commands/cluster_move_primary_cmd.cpp
index d3ddea28226..61f8d3c2d5a 100644
--- a/src/mongo/s/commands/cluster_move_primary_cmd.cpp
+++ b/src/mongo/s/commands/cluster_move_primary_cmd.cpp
@@ -42,6 +42,7 @@
#include "mongo/db/client_basic.h"
#include "mongo/db/commands.h"
#include "mongo/db/operation_context.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/s/catalog/catalog_cache.h"
#include "mongo/s/catalog/catalog_manager.h"
#include "mongo/s/client/shard_registry.h"
diff --git a/src/mongo/s/commands/commands_public.cpp b/src/mongo/s/commands/commands_public.cpp
index 861cc4a9a17..eea06d2a3b5 100644
--- a/src/mongo/s/commands/commands_public.cpp
+++ b/src/mongo/s/commands/commands_public.cpp
@@ -43,6 +43,7 @@
#include "mongo/db/commands/rename_collection.h"
#include "mongo/db/lasterror.h"
#include "mongo/db/query/lite_parsed_query.h"
+#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/s/catalog/catalog_cache.h"
#include "mongo/s/catalog/catalog_manager.h"
#include "mongo/s/chunk_manager.h"
@@ -99,7 +100,7 @@ bool cursorCommandPassthrough(OperationContext* txn,
}
BSONObj response = cursor->nextSafe().getOwned();
conn.done();
- Status status = Command::getStatusFromCommandResult(response);
+ Status status = getStatusFromCommandResult(response);
if (ErrorCodes::SendStaleConfig == status || ErrorCodes::RecvStaleConfig == status) {
throw RecvStaleConfigException("command failed because of stale config", response);
}
@@ -120,6 +121,14 @@ bool cursorCommandPassthrough(OperationContext* txn,
return true;
}
+BSONObj getQuery(const BSONObj& cmdObj) {
+ if (cmdObj["query"].type() == Object)
+ return cmdObj["query"].embeddedObject();
+ if (cmdObj["q"].type() == Object)
+ return cmdObj["q"].embeddedObject();
+ return BSONObj();
+}
+
class PublicGridCommand : public Command {
public:
PublicGridCommand(const char* n, const char* oldname = NULL) : Command(n, false, oldname) {}