diff options
author | Mathias Stearn <mathias@10gen.com> | 2017-06-21 12:53:04 -0400 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2017-06-28 11:57:04 -0400 |
commit | b70aab6e1f4c3230da27aa04cb6fa25f2341b9a6 (patch) | |
tree | ac5dd78f85c85a7ca1aa630ef5c05ea2215382a8 /src | |
parent | 0ee13c59b1c5106ee8e3eb73ffa2e1ba92a86e9a (diff) | |
download | mongo-b70aab6e1f4c3230da27aa04cb6fa25f2341b9a6.tar.gz |
SERVER-29776 Add codeName to more command failure paths
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/commands/parameters.cpp | 11 | ||||
-rw-r--r-- | src/mongo/s/commands/cluster_commands_helpers.cpp | 1 | ||||
-rw-r--r-- | src/mongo/s/commands/cluster_map_reduce_cmd.cpp | 1 | ||||
-rw-r--r-- | src/mongo/s/commands/commands_public.cpp | 14 | ||||
-rw-r--r-- | src/mongo/s/commands/strategy.cpp | 16 | ||||
-rw-r--r-- | src/mongo/s/server.cpp | 10 |
6 files changed, 12 insertions, 41 deletions
diff --git a/src/mongo/db/commands/parameters.cpp b/src/mongo/db/commands/parameters.cpp index 649ad191169..4ebb1bc7904 100644 --- a/src/mongo/db/commands/parameters.cpp +++ b/src/mongo/db/commands/parameters.cpp @@ -216,15 +216,8 @@ public: foundParameter->second->append(opCtx, result, "was"); } - Status status = foundParameter->second->set(parameter); - if (status.isOK()) { - numSet++; - continue; - } - - errmsg = status.reason(); - result.append("code", status.code()); - return false; + uassertStatusOK(foundParameter->second->set(parameter)); + numSet++; } if (numSet == 0 && !found) { diff --git a/src/mongo/s/commands/cluster_commands_helpers.cpp b/src/mongo/s/commands/cluster_commands_helpers.cpp index a8d44e4017a..1dfdd40271d 100644 --- a/src/mongo/s/commands/cluster_commands_helpers.cpp +++ b/src/mongo/s/commands/cluster_commands_helpers.cpp @@ -354,6 +354,7 @@ bool appendRawResponses(OperationContext* opCtx, // a top-level field "code" with this value to the output object. if (commonErrCode > 0) { output->append("code", commonErrCode); + output->append("codeName", ErrorCodes::errorString(ErrorCodes::fromInt(commonErrCode))); } return false; } diff --git a/src/mongo/s/commands/cluster_map_reduce_cmd.cpp b/src/mongo/s/commands/cluster_map_reduce_cmd.cpp index f9c1f88a645..c8c69c4c69d 100644 --- a/src/mongo/s/commands/cluster_map_reduce_cmd.cpp +++ b/src/mongo/s/commands/cluster_map_reduce_cmd.cpp @@ -388,6 +388,7 @@ public: int code = getUniqueCodeFromCommandResults(mrCommandResults); if (code != 0) { result.append("code", code); + result.append("codeName", ErrorCodes::errorString(ErrorCodes::fromInt(code))); } return false; diff --git a/src/mongo/s/commands/commands_public.cpp b/src/mongo/s/commands/commands_public.cpp index 398aa6f3123..bdc73bd5adc 100644 --- a/src/mongo/s/commands/commands_public.cpp +++ b/src/mongo/s/commands/commands_public.cpp @@ -1450,19 +1450,7 @@ public: double objectsLoaded = 0; while (!ars.done()) { // Block until a response is available. - auto shardResponse = ars.next(); - - // Abandon processing responses on any error. - if (!shardResponse.swResponse.isOK()) { - auto errorStatus = std::move(shardResponse.swResponse.getStatus()); - errmsg = errorStatus.reason(); - result.append("code", errorStatus.code()); - return false; - } - - // Process a successful response. - auto shardResult = std::move(shardResponse.swResponse.getValue().data); - + auto shardResult = uassertStatusOK(ars.next().swResponse).data; if (shardResult.hasField("near")) { nearStr = shardResult["near"].String(); } diff --git a/src/mongo/s/commands/strategy.cpp b/src/mongo/s/commands/strategy.cpp index ae1ec79cd4b..557ade044d8 100644 --- a/src/mongo/s/commands/strategy.cpp +++ b/src/mongo/s/commands/strategy.cpp @@ -217,9 +217,9 @@ void execCommandClient(OperationContext* opCtx, return; } - std::string errmsg; - bool ok = false; try { + std::string errmsg; + bool ok = false; if (!supportsWriteConcern) { ok = c->enhancedRun(opCtx, request, errmsg, result); } else { @@ -230,6 +230,10 @@ void execCommandClient(OperationContext* opCtx, ok = c->enhancedRun(opCtx, request, errmsg, result); } + if (!ok) { + c->incrementCommandsFailed(); + } + Command::appendCommandStatus(result, ok, errmsg); } catch (const DBException& e) { result.resetToEmpty(); const int code = e.getCode(); @@ -239,15 +243,9 @@ void execCommandClient(OperationContext* opCtx, throw; } - errmsg = e.what(); - result.append("code", code); - } - - if (!ok) { c->incrementCommandsFailed(); + Command::appendCommandStatus(result, e.toStatus()); } - - Command::appendCommandStatus(result, ok, errmsg); } void runAgainstRegistered(OperationContext* opCtx, diff --git a/src/mongo/s/server.cpp b/src/mongo/s/server.cpp index dfb2eb21aa7..187451d237c 100644 --- a/src/mongo/s/server.cpp +++ b/src/mongo/s/server.cpp @@ -179,16 +179,6 @@ static void cleanupTask() { audit::logShutdown(Client::getCurrent()); } -static BSONObj buildErrReply(const DBException& ex) { - BSONObjBuilder errB; - errB.append("$err", ex.what()); - errB.append("code", ex.getCode()); - if (!ex._shard.empty()) { - errB.append("shard", ex._shard); - } - return errB.obj(); -} - } // namespace mongo using namespace mongo; |