summaryrefslogtreecommitdiff
path: root/src/mongo/db/ftdc/collector.cpp
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2015-11-04 15:14:23 -0500
committerMark Benvenuto <mark.benvenuto@mongodb.com>2015-11-06 10:56:52 -0500
commit02eb7fa6d33d23244d41a876867d0b64f75f096f (patch)
treeebfce926ea42bc5ca225972346ec37cd53ec5490 /src/mongo/db/ftdc/collector.cpp
parent76d008dddaf588a3cfbd1db53c8771e5f9364555 (diff)
downloadmongo-02eb7fa6d33d23244d41a876867d0b64f75f096f.tar.gz
SERVER-21241 Record timestamp in root of sample document
Diffstat (limited to 'src/mongo/db/ftdc/collector.cpp')
-rw-r--r--src/mongo/db/ftdc/collector.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/mongo/db/ftdc/collector.cpp b/src/mongo/db/ftdc/collector.cpp
index 3764d105305..7a9e54ea6cf 100644
--- a/src/mongo/db/ftdc/collector.cpp
+++ b/src/mongo/db/ftdc/collector.cpp
@@ -47,11 +47,20 @@ void FTDCCollectorCollection::add(std::unique_ptr<FTDCCollectorInterface> collec
}
std::tuple<BSONObj, Date_t> FTDCCollectorCollection::collect(Client* client) {
+ // If there are no collectors, just return an empty BSONObj so that that are caller knows we did
+ // not collect anything
+ if (_collectors.empty()) {
+ return std::tuple<BSONObj, Date_t>(BSONObj(), Date_t());
+ }
+
BSONObjBuilder builder;
Date_t start = client->getServiceContext()->getClockSource()->now();
+ Date_t end;
bool firstLoop = true;
+ builder.appendDate(kFTDCCollectStartField, start);
+
for (auto& collector : _collectors) {
BSONObjBuilder subObjBuilder(builder.subobjStart(collector->name()));
@@ -75,10 +84,12 @@ std::tuple<BSONObj, Date_t> FTDCCollectorCollection::collect(Client* client) {
collector->collect(txn.get(), subObjBuilder);
}
- subObjBuilder.appendDate(kFTDCCollectEndField,
- client->getServiceContext()->getClockSource()->now());
+ end = client->getServiceContext()->getClockSource()->now();
+ subObjBuilder.appendDate(kFTDCCollectEndField, end);
}
+ builder.appendDate(kFTDCCollectEndField, end);
+
return std::tuple<BSONObj, Date_t>(builder.obj(), start);
}