diff options
author | Moustafa Maher <m.maher@10gen.com> | 2021-06-07 23:29:00 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-06-08 23:03:48 +0000 |
commit | 07207082726f26181a8479a8ac04e38d984388ab (patch) | |
tree | 308996b813e687f99e89e56fe587b94ce31425e7 /src/mongo/db/stats/server_read_concern_metrics.h | |
parent | d7bd51c05a7ac49afd7ed3b394fde123383af6de (diff) | |
download | mongo-07207082726f26181a8479a8ac04e38d984388ab.tar.gz |
SERVER-56860 Update semantics for server status's opReadConcernCounters
Diffstat (limited to 'src/mongo/db/stats/server_read_concern_metrics.h')
-rw-r--r-- | src/mongo/db/stats/server_read_concern_metrics.h | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/src/mongo/db/stats/server_read_concern_metrics.h b/src/mongo/db/stats/server_read_concern_metrics.h index 7782b959bfd..cb936d0a7aa 100644 --- a/src/mongo/db/stats/server_read_concern_metrics.h +++ b/src/mongo/db/stats/server_read_concern_metrics.h @@ -60,17 +60,44 @@ public: void updateStats(ReadConcernStats* stats, OperationContext* opCtx); private: - struct readConcernCounters { + struct ReadConcernLevelCounters { AtomicWord<unsigned long long> levelAvailableCount{0}; AtomicWord<unsigned long long> levelLinearizableCount{0}; AtomicWord<unsigned long long> levelLocalCount{0}; AtomicWord<unsigned long long> levelMajorityCount{0}; AtomicWord<unsigned long long> levelSnapshotCount{0}; AtomicWord<unsigned long long> atClusterTimeCount{0}; + /** + * Updates RC level counters for the level of 'readConcernArgs'. + */ + void recordReadConcern(const repl::ReadConcernArgs& readConcernArgs, bool isTransaction); + + /** + * Appends the accumulated RC level counters to a readConcernOps stats object. + */ + void updateStats(ReadConcernOps* stats, bool isTransaction); + void updateStats(CWRCReadConcernOps* stats, bool isTransaction); + void updateStats(ImplicitDefaultReadConcernOps* stats, bool isTransaction); + }; + + struct ReadConcernCounters { AtomicWord<unsigned long long> noLevelCount{0}; + ReadConcernLevelCounters explicitLevelCount; + ReadConcernLevelCounters cWRCLevelCount; + ReadConcernLevelCounters implicitDefaultLevelCount; + + /** + * Updates RC counters for the level of 'readConcernArgs'. + */ + void recordReadConcern(const repl::ReadConcernArgs& readConcernArgs, bool isTransaction); + + /** + * Appends the accumulated RC counters to a readConcern stats object. + */ + void updateStats(ReadConcernOps* stats, bool isTransaction); }; - readConcernCounters _nonTransactionOps; - readConcernCounters _transactionOps; + ReadConcernCounters _nonTransactionOps; + ReadConcernCounters _transactionOps; }; } // namespace mongo |