summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2017-06-21 12:53:04 -0400
committerMathias Stearn <mathias@10gen.com>2017-06-28 11:57:04 -0400
commitb70aab6e1f4c3230da27aa04cb6fa25f2341b9a6 (patch)
treeac5dd78f85c85a7ca1aa630ef5c05ea2215382a8 /src
parent0ee13c59b1c5106ee8e3eb73ffa2e1ba92a86e9a (diff)
downloadmongo-b70aab6e1f4c3230da27aa04cb6fa25f2341b9a6.tar.gz
SERVER-29776 Add codeName to more command failure paths
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/commands/parameters.cpp11
-rw-r--r--src/mongo/s/commands/cluster_commands_helpers.cpp1
-rw-r--r--src/mongo/s/commands/cluster_map_reduce_cmd.cpp1
-rw-r--r--src/mongo/s/commands/commands_public.cpp14
-rw-r--r--src/mongo/s/commands/strategy.cpp16
-rw-r--r--src/mongo/s/server.cpp10
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;