Persist active metric status across system server
Previously, all metrics/configs would deactivate on system server death.
Now, active status is restored.
Bug: 129717537
Test: bit statsd_test:*
Test: libprotoutil_test:ProtoOutputStream*
Change-Id: Idf372457f60a931a2d00176a5eab58c534a25e41
diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp
index 623a1f2..8191d37 100644
--- a/cmds/statsd/src/StatsService.cpp
+++ b/cmds/statsd/src/StatsService.cpp
@@ -1478,8 +1478,21 @@
StatsdStats::getInstance().noteSystemServerRestart(getWallClockSec());
if (mProcessor != nullptr) {
ALOGW("Reset statsd upon system server restarts.");
+ int64_t systemServerRestartNs = getElapsedRealtimeNs();
+ ProtoOutputStream proto;
+ mProcessor->WriteActiveConfigsToProtoOutputStream(systemServerRestartNs,
+ STATSCOMPANION_DIED, &proto);
+
mProcessor->WriteDataToDisk(STATSCOMPANION_DIED, FAST);
mProcessor->resetConfigs();
+
+ std::string serializedActiveConfigs;
+ if (proto.serializeToString(&serializedActiveConfigs)) {
+ ActiveConfigList activeConfigs;
+ if (activeConfigs.ParseFromString(serializedActiveConfigs)) {
+ mProcessor->SetConfigsActiveState(activeConfigs, systemServerRestartNs);
+ }
+ }
}
mAnomalyAlarmMonitor->setStatsCompanionService(nullptr);
mPeriodicAlarmMonitor->setStatsCompanionService(nullptr);