summaryrefslogtreecommitdiff
path: root/cmds/statsd/src/metrics/MetricsManager.cpp
diff options
context:
space:
mode:
authorTej Singh <singhtejinder@google.com>2020-11-06 18:48:04 -0800
committerTej Singh <singhtejinder@google.com>2020-11-09 17:35:35 -0800
commit9465da161d6dcebeb9ce212a34ac755fa93595f6 (patch)
treefdf0ccf125cb861d51efd151a872eff106222719 /cmds/statsd/src/metrics/MetricsManager.cpp
parent57206c825afdab9067ee1130e1bd1f540a160dbf (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.cpp68
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();