summaryrefslogtreecommitdiff
path: root/src/mongo/db/stats/api_version_metrics.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/stats/api_version_metrics.h')
-rw-r--r--src/mongo/db/stats/api_version_metrics.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mongo/db/stats/api_version_metrics.h b/src/mongo/db/stats/api_version_metrics.h
index 12288ecdf08..6d2b7eb6ce4 100644
--- a/src/mongo/db/stats/api_version_metrics.h
+++ b/src/mongo/db/stats/api_version_metrics.h
@@ -44,6 +44,14 @@ namespace mongo {
*/
class APIVersionMetrics {
public:
+ // To ensure that the BSONObject doesn't exceed the size limit, the 'appName' field has a limit
+ // of 128 bytes, which results in an output of approximately 128KB for app names.
+ static constexpr int KMaxNumOfOutputAppNames = 1000;
+
+ // To prevent unbounded memory usage, we limit the size of the saved app name to approximately
+ // 384KB, as it is stored for 24 hours.
+ static constexpr int KMaxNumOfSavedAppNames = KMaxNumOfOutputAppNames * 3;
+
using APIVersionMetricsMap =
stdx::unordered_map<std::string, stdx::unordered_map<std::string, Date_t>>;
@@ -58,11 +66,15 @@ public:
APIVersionMetricsMap getAPIVersionMetrics_forTest();
+ void appendAPIVersionMetricsInfo_forTest(BSONObjBuilder* b);
+
class APIVersionMetricsSSM;
private:
void _removeStaleTimestamps(WithLock lk, Date_t now);
+ void _appendAPIVersionData(BSONObjBuilder* b);
+
mutable Mutex _mutex = MONGO_MAKE_LATCH("APIVersionMetrics::_mutex");
// Map of maps for API version metrics. For every application, for each API version, we store