summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/find.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/query/find.cpp')
-rw-r--r--src/mongo/db/query/find.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/mongo/db/query/find.cpp b/src/mongo/db/query/find.cpp
index d2f36155e13..cd8e21bf6c7 100644
--- a/src/mongo/db/query/find.cpp
+++ b/src/mongo/db/query/find.cpp
@@ -107,19 +107,28 @@ void endQueryOp(OperationContext* opCtx,
const CollectionPtr& collection,
const PlanExecutor& exec,
long long numResults,
- CursorId cursorId) {
+ boost::optional<ClientCursorPin&> cursor,
+ const BSONObj& cmdObj) {
auto curOp = CurOp::get(opCtx);
- // Fill out basic CurOp query exec properties.
- curOp->debug().nreturned = numResults;
- curOp->debug().cursorid = (0 == cursorId ? -1 : cursorId);
- curOp->debug().cursorExhausted = (0 == cursorId);
+ // Fill out basic CurOp query exec properties. More metrics (nreturned and executionTime)
+ // are collected within collectQueryStatsMongod.
+ curOp->debug().cursorid = (cursor.has_value() ? cursor->getCursor()->cursorid() : -1);
+ curOp->debug().cursorExhausted = !cursor.has_value();
+ curOp->debug().additiveMetrics.nBatches = 1;
// Fill out CurOp based on explain summary statistics.
PlanSummaryStats summaryStats;
auto&& explainer = exec.getPlanExplainer();
explainer.getSummaryStats(&summaryStats);
curOp->debug().setPlanSummaryMetrics(summaryStats);
+ curOp->setEndOfOpMetrics(numResults);
+
+ if (cursor) {
+ collectQueryStatsMongod(opCtx, *cursor);
+ } else {
+ collectQueryStatsMongod(opCtx, std::move(curOp->debug().queryStatsInfo.key));
+ }
if (collection) {
CollectionQueryInfo::get(collection).notifyOfQuery(opCtx, collection, summaryStats);