Fix the gauge metric data size estimation.
Test: statsd test
BUG: b/77906846
Change-Id: Ie5ab54771acadde1e825289fe5ec491cc2225458
diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
index a940d58..21a1567 100644
--- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
@@ -186,7 +186,6 @@
flushIfNeededLocked(dumpTimeNs);
}
- flushIfNeededLocked(dumpTimeNs);
if (mPastBuckets.empty()) {
return;
}
@@ -538,7 +537,14 @@
size_t GaugeMetricProducer::byteSizeLocked() const {
size_t totalSize = 0;
for (const auto& pair : mPastBuckets) {
- totalSize += pair.second.size() * kBucketSize;
+ for (const auto& bucket : pair.second) {
+ totalSize += bucket.mGaugeAtoms.size() * sizeof(GaugeAtom);
+ for (const auto& atom : bucket.mGaugeAtoms) {
+ if (atom.mFields != nullptr) {
+ totalSize += atom.mFields->size() * sizeof(FieldValue);
+ }
+ }
+ }
}
return totalSize;
}