diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2016-03-29 14:44:39 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2016-03-29 17:16:15 -0400 |
commit | 2cc6e175738a5e18635c28f2bd68c1d6f679e0fc (patch) | |
tree | 438c196a69ae55322840d3528dd1e6b1dc370088 | |
parent | e9638fa4456bbb4fd2492f84c6ec82e37dded8e2 (diff) | |
download | mongo-2cc6e175738a5e18635c28f2bd68c1d6f679e0fc.tar.gz |
SERVER-23405 Get rid of Command::getStatusFromCommand
-rw-r--r-- | src/mongo/db/auth/authz_manager_external_state_s.cpp | 10 | ||||
-rw-r--r-- | src/mongo/db/auth/user_cache_invalidator_job.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/commands.cpp | 19 | ||||
-rw-r--r-- | src/mongo/db/commands.h | 13 | ||||
-rw-r--r-- | src/mongo/db/commands/copydb_start_commands.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/commands/write_commands/batch_executor.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/dbdirectclient.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/instance.cpp | 3 | ||||
-rw-r--r-- | src/mongo/s/catalog/replset/catalog_manager_replica_set.cpp | 10 | ||||
-rw-r--r-- | src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp | 15 | ||||
-rw-r--r-- | src/mongo/s/chunk.cpp | 2 | ||||
-rw-r--r-- | src/mongo/s/chunk_manager.cpp | 6 | ||||
-rw-r--r-- | src/mongo/s/commands/cluster_move_primary_cmd.cpp | 1 | ||||
-rw-r--r-- | src/mongo/s/commands/commands_public.cpp | 11 |
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) {} |