diff options
author | Tej Singh <singhtejinder@google.com> | 2020-11-06 18:48:04 -0800 |
---|---|---|
committer | Tej Singh <singhtejinder@google.com> | 2020-11-09 17:35:35 -0800 |
commit | 9465da161d6dcebeb9ce212a34ac755fa93595f6 (patch) | |
tree | fdf0ccf125cb861d51efd151a872eff106222719 /cmds/statsd/src/metrics/MetricsManager.cpp | |
parent | 57206c825afdab9067ee1130e1bd1f540a160dbf (diff) |
Partial config update: various small things
- init new/replaced metrics
- guardrails for number of metrics/matchers/conditions/alerts
- report update to statsdstats
- update if the config is active
Test: atest statsd_test
Bug: 162323476
Change-Id: Ieaa2d18903de8020fcee5bb128124ab19f10a152
Diffstat (limited to 'cmds/statsd/src/metrics/MetricsManager.cpp')
-rw-r--r-- | cmds/statsd/src/metrics/MetricsManager.cpp | 68 |
1 files changed, 34 insertions, 34 deletions
diff --git a/cmds/statsd/src/metrics/MetricsManager.cpp b/cmds/statsd/src/metrics/MetricsManager.cpp index 3b6e10b030fb..f9b0a1030eee 100644 --- a/cmds/statsd/src/metrics/MetricsManager.cpp +++ b/cmds/statsd/src/metrics/MetricsManager.cpp @@ -97,40 +97,8 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, for (const auto& annotation : config.annotation()) { mAnnotations.emplace_back(annotation.field_int64(), annotation.field_int32()); } - - // Guardrail. Reject the config if it's too big. - if (mAllMetricProducers.size() > StatsdStats::kMaxMetricCountPerConfig || - mAllConditionTrackers.size() > StatsdStats::kMaxConditionCountPerConfig || - mAllAtomMatchingTrackers.size() > StatsdStats::kMaxMatcherCountPerConfig) { - ALOGE("This config is too big! Reject!"); - mConfigValid = false; - } - if (mAllAnomalyTrackers.size() > StatsdStats::kMaxAlertCountPerConfig) { - ALOGE("This config has too many alerts! Reject!"); - mConfigValid = false; - } - - mIsAlwaysActive = (mMetricIndexesWithActivation.size() != mAllMetricProducers.size()) || - (mAllMetricProducers.size() == 0); - bool isActive = mIsAlwaysActive; - for (int metric : mMetricIndexesWithActivation) { - isActive |= mAllMetricProducers[metric]->isActive(); - } - mIsActive = isActive; - VLOG("mIsActive is initialized to %d", mIsActive) - - // no matter whether this config is valid, log it in the stats. - StatsdStats::getInstance().noteConfigReceived( - key, mAllMetricProducers.size(), mAllConditionTrackers.size(), - mAllAtomMatchingTrackers.size(), mAllAnomalyTrackers.size(), mAnnotations, - mConfigValid); - // Check active - for (const auto& metric : mAllMetricProducers) { - if (metric->isActive()) { - mIsActive = true; - break; - } - } + verifyGuardrailsAndUpdateStatsdStats(); + initializeConfigActiveStatus(); } MetricsManager::~MetricsManager() { @@ -211,6 +179,9 @@ bool MetricsManager::updateConfig(const StatsdConfig& config, const int64_t time mPullAtomUids.clear(); mPullAtomPackages.clear(); createAllLogSourcesFromConfig(config); + + verifyGuardrailsAndUpdateStatsdStats(); + initializeConfigActiveStatus(); return mConfigValid; } @@ -272,6 +243,35 @@ void MetricsManager::createAllLogSourcesFromConfig(const StatsdConfig& config) { } } +void MetricsManager::verifyGuardrailsAndUpdateStatsdStats() { + // Guardrail. Reject the config if it's too big. + if (mAllMetricProducers.size() > StatsdStats::kMaxMetricCountPerConfig || + mAllConditionTrackers.size() > StatsdStats::kMaxConditionCountPerConfig || + mAllAtomMatchingTrackers.size() > StatsdStats::kMaxMatcherCountPerConfig) { + ALOGE("This config is too big! Reject!"); + mConfigValid = false; + } + if (mAllAnomalyTrackers.size() > StatsdStats::kMaxAlertCountPerConfig) { + ALOGE("This config has too many alerts! Reject!"); + mConfigValid = false; + } + // no matter whether this config is valid, log it in the stats. + StatsdStats::getInstance().noteConfigReceived( + mConfigKey, mAllMetricProducers.size(), mAllConditionTrackers.size(), + mAllAtomMatchingTrackers.size(), mAllAnomalyTrackers.size(), mAnnotations, + mConfigValid); +} + +void MetricsManager::initializeConfigActiveStatus() { + mIsAlwaysActive = (mMetricIndexesWithActivation.size() != mAllMetricProducers.size()) || + (mAllMetricProducers.size() == 0); + mIsActive = mIsAlwaysActive; + for (int metric : mMetricIndexesWithActivation) { + mIsActive |= mAllMetricProducers[metric]->isActive(); + } + VLOG("mIsActive is initialized to %d", mIsActive); +} + void MetricsManager::initAllowedLogSources() { std::lock_guard<std::mutex> lock(mAllowedLogSourcesMutex); mAllowedLogSources.clear(); |