diff options
Diffstat (limited to 'src/mongo/db/stats/server_write_concern_metrics.h')
-rw-r--r-- | src/mongo/db/stats/server_write_concern_metrics.h | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/src/mongo/db/stats/server_write_concern_metrics.h b/src/mongo/db/stats/server_write_concern_metrics.h index b1e17f53e38..46a99bab364 100644 --- a/src/mongo/db/stats/server_write_concern_metrics.h +++ b/src/mongo/db/stats/server_write_concern_metrics.h @@ -76,25 +76,50 @@ public: BSONObj toBSON() const; private: - struct WriteConcernMetricsForOperationType { - /** - * Updates counter for the 'w' value of 'writeConcernOptions'. - */ - void recordWriteConcern(const WriteConcernOptions& writeConcernOptions, size_t numOps = 1); + struct WriteConcernCounters { + WriteConcernCounters() = default; - void toBSON(BSONObjBuilder* builder) const; + WriteConcernCounters(bool exportWTag) : exportWTag(exportWTag) {} // Count of operations with writeConcern w:"majority". std::uint64_t wMajorityCount = 0; - // Count of operations without a writeConcern "w" value. - std::uint64_t noWCount = 0; - // Counts of operations with writeConcern w:<num>. std::map<int, std::uint64_t> wNumCounts; + // Set to true to include "wTag" section when exporting to BSON. + bool exportWTag = true; + // Counts of operations with writeConcern w:"tag". StringMap<std::uint64_t> wTagCounts; + + /** + * Updates counters for the 'w' value of 'writeConcernOptions'. + */ + void recordWriteConcern(const WriteConcernOptions& writeConcernOptions, size_t numOps); + + void toBSON(BSONObjBuilder* builder) const; + }; + + struct WriteConcernMetricsForOperationType { + /** + * Updates the corresponding WC counters for the 'w' value of 'writeConcernOptions'. + */ + void recordWriteConcern(const WriteConcernOptions& writeConcernOptions, size_t numOps = 1); + + void toBSON(BSONObjBuilder* builder) const; + + // Counts of operations with writeConcern with 'w' value explicitly set by client. + WriteConcernCounters explicitWC; + + // Counts of operations used cluster-wide writeConcern. + WriteConcernCounters cWWC; + + // Counts of operations used implicit default writeConcern. + WriteConcernCounters implicitDefaultWC = WriteConcernCounters(false); + + // Count of operations without an explicit writeConcern with "w" value. + std::uint64_t notExplicitWCount = 0; }; mutable Mutex _mutex = MONGO_MAKE_LATCH("ServerWriteConcernMetrics::_mutex"); |