diff options
author | David Storch <david.storch@10gen.com> | 2014-10-16 10:49:36 -0400 |
---|---|---|
committer | David Storch <david.storch@10gen.com> | 2014-10-29 14:07:47 -0400 |
commit | 32a5c787a2545f27f0d1aeeb43764c40ae48e32b (patch) | |
tree | 2122e46f9c1ec50c68e9f01b0e3e0cf5b819de4b /src/mongo/s/cluster_explain.cpp | |
parent | 205756215a42aa6abf8caca6577e4148833b50c5 (diff) | |
download | mongo-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/cluster_explain.cpp')
-rw-r--r-- | src/mongo/s/cluster_explain.cpp | 12 |
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(); |