summaryrefslogtreecommitdiff
path: root/src/mongo/db/stats/server_read_concern_metrics.h
diff options
context:
space:
mode:
authorMoustafa Maher <m.maher@10gen.com>2021-06-07 23:29:00 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-06-08 23:03:48 +0000
commit07207082726f26181a8479a8ac04e38d984388ab (patch)
tree308996b813e687f99e89e56fe587b94ce31425e7 /src/mongo/db/stats/server_read_concern_metrics.h
parentd7bd51c05a7ac49afd7ed3b394fde123383af6de (diff)
downloadmongo-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.h33
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