summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/telemetry.h
diff options
context:
space:
mode:
authorJess Balint <jbalint@gmail.com>2022-11-15 05:07:22 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-11-15 06:30:53 +0000
commit7be344b92d3af3fd8eb4542e594e084bed394fdc (patch)
tree8fb77406d0eb74fe46854c121454ddd7327cec3e /src/mongo/db/query/telemetry.h
parent148c522ffefc93dcc8227579b583691335cd4f2f (diff)
downloadmongo-7be344b92d3af3fd8eb4542e594e084bed394fdc.tar.gz
SERVER-71292 Redact all sensitive information in query #8731
Diffstat (limited to 'src/mongo/db/query/telemetry.h')
-rw-r--r--src/mongo/db/query/telemetry.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/mongo/db/query/telemetry.h b/src/mongo/db/query/telemetry.h
index 3a2f41a7e4e..0e225d2f17e 100644
--- a/src/mongo/db/query/telemetry.h
+++ b/src/mongo/db/query/telemetry.h
@@ -107,6 +107,11 @@ public:
}
/**
+ * Redact a given telemetry key.
+ */
+ const BSONObj& redactKey(const BSONObj& key) const;
+
+ /**
* Timestamp for when this query shape was added to the store. Set on construction.
*/
const Timestamp firstSeenTimestamp;
@@ -130,6 +135,12 @@ public:
AggregatedMetric docsScanned;
AggregatedMetric keysScanned;
+
+private:
+ /**
+ * We cache the redacted key the first time it's computed.
+ */
+ mutable boost::optional<BSONObj> _redactedKey;
};
struct TelemetryPartitioner {
@@ -139,9 +150,15 @@ struct TelemetryPartitioner {
}
};
+/**
+ * Average key size used to pad the metrics size. We store a cached redaction of the key in the
+ * TelemetryMetrics object.
+ */
+const size_t kAverageKeySize = 100;
+
struct ComputeEntrySize {
size_t operator()(const TelemetryMetrics& entry) {
- return sizeof(TelemetryMetrics);
+ return sizeof(TelemetryMetrics) + kAverageKeySize;
}
};