Loading cmds/statsd/src/StatsLogProcessor.cpp +26 −11 Original line number Diff line number Diff line Loading @@ -526,19 +526,34 @@ void StatsLogProcessor::OnConfigUpdated(const int64_t timestampNs, const ConfigK OnConfigUpdatedLocked(timestampNs, key, config); } void StatsLogProcessor::OnConfigUpdatedLocked( const int64_t timestampNs, const ConfigKey& key, const StatsdConfig& config) { void StatsLogProcessor::OnConfigUpdatedLocked(const int64_t timestampNs, const ConfigKey& key, const StatsdConfig& config, bool modularUpdate) { VLOG("Updated configuration for key %s", key.ToString().c_str()); // Create new config if this is not a modular update or if this is a new config. const auto& it = mMetricsManagers.find(key); bool configValid = false; if (!modularUpdate || it == mMetricsManagers.end()) { sp<MetricsManager> newMetricsManager = new MetricsManager(key, config, mTimeBaseNs, timestampNs, mUidMap, mPullerManager, mAnomalyAlarmMonitor, mPeriodicAlarmMonitor); if (newMetricsManager->isConfigValid()) { configValid = newMetricsManager->isConfigValid(); if (configValid) { newMetricsManager->init(); mUidMap->OnConfigUpdated(key); newMetricsManager->refreshTtl(timestampNs); mMetricsManagers[key] = newMetricsManager; VLOG("StatsdConfig valid"); } } else { // Preserve the existing MetricsManager, update necessary components and metadata in place. configValid = it->second->updateConfig(timestampNs, config); if (configValid) { // TODO(b/162323476): refresh TTL, ensure init() is handled properly. mUidMap->OnConfigUpdated(key); } } if (!configValid) { // If there is any error in the config, don't use it. // Remove any existing config with the same key. ALOGE("StatsdConfig NOT valid"); Loading cmds/statsd/src/StatsLogProcessor.h +2 −2 Original line number Diff line number Diff line Loading @@ -187,8 +187,8 @@ private: void resetIfConfigTtlExpiredLocked(const int64_t timestampNs); void OnConfigUpdatedLocked( const int64_t currentTimestampNs, const ConfigKey& key, const StatsdConfig& config); void OnConfigUpdatedLocked(const int64_t currentTimestampNs, const ConfigKey& key, const StatsdConfig& config, bool modularUpdate = false); void GetActiveConfigsLocked(const int uid, vector<int64_t>& outActiveConfigs); Loading cmds/statsd/src/metrics/MetricsManager.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,10 @@ MetricsManager::~MetricsManager() { VLOG("~MetricsManager()"); } bool MetricsManager::updateConfig(const int64_t currentTimeNs, const StatsdConfig& config) { return mConfigValid; } void MetricsManager::initLogSourceWhiteList() { std::lock_guard<std::mutex> lock(mAllowedLogSourcesMutex); mAllowedLogSources.clear(); Loading cmds/statsd/src/metrics/MetricsManager.h +2 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ public: virtual ~MetricsManager(); bool updateConfig(const int64_t currentTimeNs, const StatsdConfig& config); // Return whether the configuration is valid. bool isConfigValid() const; Loading cmds/statsd/src/packages/PackageInfoListener.h +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #ifndef STATSD_PACKAGE_INFO_LISTENER_H #define STATSD_PACKAGE_INFO_LISTENER_H #include <utils/RefBase.h> #include <string> namespace android { Loading Loading
cmds/statsd/src/StatsLogProcessor.cpp +26 −11 Original line number Diff line number Diff line Loading @@ -526,19 +526,34 @@ void StatsLogProcessor::OnConfigUpdated(const int64_t timestampNs, const ConfigK OnConfigUpdatedLocked(timestampNs, key, config); } void StatsLogProcessor::OnConfigUpdatedLocked( const int64_t timestampNs, const ConfigKey& key, const StatsdConfig& config) { void StatsLogProcessor::OnConfigUpdatedLocked(const int64_t timestampNs, const ConfigKey& key, const StatsdConfig& config, bool modularUpdate) { VLOG("Updated configuration for key %s", key.ToString().c_str()); // Create new config if this is not a modular update or if this is a new config. const auto& it = mMetricsManagers.find(key); bool configValid = false; if (!modularUpdate || it == mMetricsManagers.end()) { sp<MetricsManager> newMetricsManager = new MetricsManager(key, config, mTimeBaseNs, timestampNs, mUidMap, mPullerManager, mAnomalyAlarmMonitor, mPeriodicAlarmMonitor); if (newMetricsManager->isConfigValid()) { configValid = newMetricsManager->isConfigValid(); if (configValid) { newMetricsManager->init(); mUidMap->OnConfigUpdated(key); newMetricsManager->refreshTtl(timestampNs); mMetricsManagers[key] = newMetricsManager; VLOG("StatsdConfig valid"); } } else { // Preserve the existing MetricsManager, update necessary components and metadata in place. configValid = it->second->updateConfig(timestampNs, config); if (configValid) { // TODO(b/162323476): refresh TTL, ensure init() is handled properly. mUidMap->OnConfigUpdated(key); } } if (!configValid) { // If there is any error in the config, don't use it. // Remove any existing config with the same key. ALOGE("StatsdConfig NOT valid"); Loading
cmds/statsd/src/StatsLogProcessor.h +2 −2 Original line number Diff line number Diff line Loading @@ -187,8 +187,8 @@ private: void resetIfConfigTtlExpiredLocked(const int64_t timestampNs); void OnConfigUpdatedLocked( const int64_t currentTimestampNs, const ConfigKey& key, const StatsdConfig& config); void OnConfigUpdatedLocked(const int64_t currentTimestampNs, const ConfigKey& key, const StatsdConfig& config, bool modularUpdate = false); void GetActiveConfigsLocked(const int uid, vector<int64_t>& outActiveConfigs); Loading
cmds/statsd/src/metrics/MetricsManager.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,10 @@ MetricsManager::~MetricsManager() { VLOG("~MetricsManager()"); } bool MetricsManager::updateConfig(const int64_t currentTimeNs, const StatsdConfig& config) { return mConfigValid; } void MetricsManager::initLogSourceWhiteList() { std::lock_guard<std::mutex> lock(mAllowedLogSourcesMutex); mAllowedLogSources.clear(); Loading
cmds/statsd/src/metrics/MetricsManager.h +2 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ public: virtual ~MetricsManager(); bool updateConfig(const int64_t currentTimeNs, const StatsdConfig& config); // Return whether the configuration is valid. bool isConfigValid() const; Loading
cmds/statsd/src/packages/PackageInfoListener.h +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #ifndef STATSD_PACKAGE_INFO_LISTENER_H #define STATSD_PACKAGE_INFO_LISTENER_H #include <utils/RefBase.h> #include <string> namespace android { Loading