From b2532daf4d9922b706054705b8dbf94a9df6a191 Mon Sep 17 00:00:00 2001 From: Yangster-mac Date: Wed, 11 Apr 2018 13:55:04 -0700 Subject: [PATCH] Fix the gauge metric data size estimation. Test: statsd test BUG: b/77906846 Change-Id: Ie5ab54771acadde1e825289fe5ec491cc2225458 --- cmds/statsd/src/metrics/GaugeMetricProducer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp index a940d58b7c4d3..21a1567775edf 100644 --- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp +++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp @@ -186,7 +186,6 @@ void GaugeMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs, flushIfNeededLocked(dumpTimeNs); } - flushIfNeededLocked(dumpTimeNs); if (mPastBuckets.empty()) { return; } @@ -538,7 +537,14 @@ void GaugeMetricProducer::flushCurrentBucketLocked(const int64_t& eventTimeNs) { 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; }