summaryrefslogtreecommitdiff
path: root/src/mongo/s
diff options
context:
space:
mode:
authorDavid Storch <david.storch@10gen.com>2014-10-16 10:49:36 -0400
committerDavid Storch <david.storch@10gen.com>2014-10-29 14:07:47 -0400
commit32a5c787a2545f27f0d1aeeb43764c40ae48e32b (patch)
tree2122e46f9c1ec50c68e9f01b0e3e0cf5b819de4b /src/mongo/s
parent205756215a42aa6abf8caca6577e4148833b50c5 (diff)
downloadmongo-32a5c787a2545f27f0d1aeeb43764c40ae48e32b.tar.gz
SERVER-15527 explain should report planner info and exec stats when query execution fails
This also changes the error behavior of explain so that the explain command succeeds as long as it has provided valid output, even if the underlying operation failed.
Diffstat (limited to 'src/mongo/s')
-rw-r--r--src/mongo/s/cluster_explain.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mongo/s/cluster_explain.cpp b/src/mongo/s/cluster_explain.cpp
index a90d4baa9a2..f75c22e45fc 100644
--- a/src/mongo/s/cluster_explain.cpp
+++ b/src/mongo/s/cluster_explain.cpp
@@ -270,6 +270,18 @@ namespace mongo {
BSONObj execStages = execStats["executionStages"].Obj();
singleShardBob.append("shardName", shardResults[i].shardTarget.getName());
+
+ // Append error-related fields, if present.
+ if (!execStats["executionSuccess"].eoo()) {
+ singleShardBob.append(execStats["executionSuccess"]);
+ }
+ if (!execStats["errorMessage"].eoo()) {
+ singleShardBob.append(execStats["errorMessage"]);
+ }
+ if (!execStats["errorCode"].eoo()) {
+ singleShardBob.append(execStats["errorCode"]);
+ }
+
appendIfRoom(&singleShardBob, execStages, "executionStages");
singleShardBob.doneFast();