Fix statsd returning uidmap with empty reports.
We notice devices uploading a bunch of bytes for the uidmap even if
the device is running an empty config, so there are no actual metrics
to report. This hardcodes some logic to skip the inclusion of the
uidmap if there are exactly 0 metrics.
Bug: 79381210
Test: Tested unit-tests on marlin-eng
Change-Id: I96348235341a7faf15ff57d4d1eccac635a3a999
diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp
index 4d27948..daafe9c 100644
--- a/cmds/statsd/src/StatsLogProcessor.cpp
+++ b/cmds/statsd/src/StatsLogProcessor.cpp
@@ -382,10 +382,13 @@
it->second->onDumpReport(dumpTimeStampNs, include_current_partial_bucket,
&str_set, proto);
- // Fill in UidMap.
- uint64_t uidMapToken = proto->start(FIELD_TYPE_MESSAGE | FIELD_ID_UID_MAP);
- mUidMap->appendUidMap(dumpTimeStampNs, key, &str_set, proto);
- proto->end(uidMapToken);
+ // Fill in UidMap if there is at least one metric to report.
+ // This skips the uid map if it's an empty config.
+ if (it->second->getNumMetrics() > 0) {
+ uint64_t uidMapToken = proto->start(FIELD_TYPE_MESSAGE | FIELD_ID_UID_MAP);
+ mUidMap->appendUidMap(dumpTimeStampNs, key, &str_set, proto);
+ proto->end(uidMapToken);
+ }
// Fill in the timestamps.
proto->write(FIELD_TYPE_INT64 | FIELD_ID_LAST_REPORT_ELAPSED_NANOS,