summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
authorDan Larkin-York <dan.larkin-york@mongodb.com>2022-08-29 22:32:52 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-08-29 23:12:36 +0000
commitbe2effed55930ecd2b9efc06057ab45dbb4163d0 (patch)
treea2da49851184afe549b7456ae9a6cd4eed2f50f9 /src/mongo
parentccb0d93033900be8cead29d3cdd414d8a85f2b03 (diff)
downloadmongo-be2effed55930ecd2b9efc06057ab45dbb4163d0.tar.gz
SERVER-66699 Add statistics about bucket state management to serverStatus
Diffstat (limited to 'src/mongo')
-rw-r--r--src/mongo/db/timeseries/bucket_catalog.cpp20
-rw-r--r--src/mongo/db/timeseries/bucket_catalog.h11
2 files changed, 31 insertions, 0 deletions
diff --git a/src/mongo/db/timeseries/bucket_catalog.cpp b/src/mongo/db/timeseries/bucket_catalog.cpp
index 10ce10848cf..e7df8f04471 100644
--- a/src/mongo/db/timeseries/bucket_catalog.cpp
+++ b/src/mongo/db/timeseries/bucket_catalog.cpp
@@ -27,6 +27,8 @@
* it in the license file.
*/
+#include "mongo/bson/bsonobj.h"
+#include "mongo/bson/bsonobjbuilder.h"
#include "mongo/platform/basic.h"
#include "mongo/db/timeseries/bucket_catalog.h"
@@ -431,6 +433,17 @@ boost::optional<BucketCatalog::BucketState> BucketCatalog::BucketStateManager::s
return _setBucketStateHelper(catalogLock, id, target);
}
+void BucketCatalog::BucketStateManager::appendStats(BSONObjBuilder* base) const {
+ stdx::lock_guard catalogLock{*_mutex};
+
+ BSONObjBuilder builder{base->subobjStart("stateManagement")};
+
+ builder.appendNumber("bucketsManaged", static_cast<long long>(_bucketStates.size()));
+ builder.appendNumber("currentEra", static_cast<long long>(_era));
+ builder.appendNumber("erasWithRemainingBuckets", static_cast<long long>(_countMap.size()));
+ builder.appendNumber("trackedClearOperations", static_cast<long long>(_clearRegistry.size()));
+}
+
boost::optional<BucketCatalog::BucketState>
BucketCatalog::BucketStateManager::_setBucketStateHelper(WithLock catalogLock,
const OID& id,
@@ -1027,6 +1040,10 @@ void BucketCatalog::appendGlobalExecutionStats(BSONObjBuilder* builder) const {
_appendExecutionStatsToBuilder(&_globalExecutionStats, builder);
}
+void BucketCatalog::appendStateManagementStats(BSONObjBuilder* builder) const {
+ _bucketStateManager.appendStats(builder);
+}
+
BucketCatalog::BucketMetadata::BucketMetadata(BSONElement elem,
const StringData::ComparatorInterface* comparator)
: _metadataElement(elem), _comparator(comparator) {
@@ -1865,6 +1882,9 @@ public:
// Append the global execution stats for all namespaces.
bucketCatalog.appendGlobalExecutionStats(&builder);
+ // Append the global state management stats for all namespaces.
+ bucketCatalog.appendStateManagementStats(&builder);
+
return builder.obj();
}
} bucketCatalogServerStatus;
diff --git a/src/mongo/db/timeseries/bucket_catalog.h b/src/mongo/db/timeseries/bucket_catalog.h
index 921cc330a4d..a6cd1169a11 100644
--- a/src/mongo/db/timeseries/bucket_catalog.h
+++ b/src/mongo/db/timeseries/bucket_catalog.h
@@ -29,6 +29,7 @@
#pragma once
+#include "mongo/bson/bsonobjbuilder.h"
#include <boost/container/small_vector.hpp>
#include <boost/container/static_vector.hpp>
#include <queue>
@@ -377,6 +378,11 @@ public:
*/
void appendGlobalExecutionStats(BSONObjBuilder* builder) const;
+ /**
+ * Appends the global bucket state management stats for all namespaces to the builder.
+ */
+ void appendStateManagementStats(BSONObjBuilder* builder) const;
+
protected:
enum class BucketState {
// Bucket can be inserted into, and does not have an outstanding prepared commit
@@ -589,6 +595,11 @@ protected:
*/
boost::optional<BucketState> setBucketState(const OID& id, BucketState target);
+ /**
+ * Appends statistics for observability.
+ */
+ void appendStats(BSONObjBuilder* builder) const;
+
protected:
void _decrementEraCountHelper(uint64_t era);
void _incrementEraCountHelper(uint64_t era);