Loading cmds/statsd/src/guardrail/StatsdStats.h +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public: const static int kDimensionKeySizeHardLimit = 500; const static int kMaxConfigCount = 10; const static int kMaxAlertCountPerConfig = 100; const static int kMaxConditionCountPerConfig = 200; const static int kMaxMetricCountPerConfig = 300; const static int kMaxMatcherCountPerConfig = 500; Loading cmds/statsd/src/metrics/MetricProducer.h +1 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ public: return byteSizeLocked(); } /* If alert is valid, adds an AnomalyTracker and returns it. If invalid, returns nullptr. */ virtual sp<AnomalyTracker> addAnomalyTracker(const Alert &alert) { std::lock_guard<std::mutex> lock(mMutex); sp<AnomalyTracker> anomalyTracker = new AnomalyTracker(alert, mConfigKey); Loading cmds/statsd/src/metrics/MetricsManager.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -92,8 +92,10 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, ALOGE("This config is too big! Reject!"); mConfigValid = false; } // TODO: add alert size. 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(key, mAllMetricProducers.size(), mAllConditionTrackers.size(), Loading cmds/statsd/src/metrics/metrics_manager_util.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -513,11 +513,13 @@ bool initAlerts(const StatsdConfig& config, const int metricIndex = itr->second; sp<MetricProducer> metric = allMetricProducers[metricIndex]; sp<AnomalyTracker> anomalyTracker = metric->addAnomalyTracker(alert); if (anomalyTracker != nullptr) { if (anomalyTracker == nullptr) { // The ALOGW for this invalid alert was already displayed in addAnomalyTracker(). return false; } anomalyTrackerMap.insert(std::make_pair(alert.id(), allAnomalyTrackers.size())); allAnomalyTrackers.push_back(anomalyTracker); } } for (int i = 0; i < config.subscription_size(); ++i) { const Subscription& subscription = config.subscription(i); if (subscription.subscriber_information_case() == Loading services/core/java/com/android/server/stats/StatsCompanionService.java +5 −6 Original line number Diff line number Diff line Loading @@ -172,7 +172,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { public void sendSubscriberBroadcast(IBinder intentSenderBinder, long configUid, long configKey, long subscriptionId, long subscriptionRuleId, StatsDimensionsValue dimensionsValue) { if (DEBUG) Slog.d(TAG, "Statsd requested to sendSubscriberBroadcast."); enforceCallingPermission(); IntentSender intentSender = new IntentSender(intentSenderBinder); Intent intent = new Intent() Loading @@ -181,16 +180,16 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { .putExtra(StatsManager.EXTRA_STATS_SUBSCRIPTION_ID, subscriptionId) .putExtra(StatsManager.EXTRA_STATS_SUBSCRIPTION_RULE_ID, subscriptionRuleId) .putExtra(StatsManager.EXTRA_STATS_DIMENSIONS_VALUE, dimensionsValue); if (DEBUG) { Slog.d(TAG, String.format("Statsd sendSubscriberBroadcast with params {%d %d %d %d %s}", configUid, configKey, subscriptionId, subscriptionRuleId, dimensionsValue)); } try { intentSender.sendIntent(mContext, CODE_SUBSCRIBER_BROADCAST, intent, null, null); } catch (IntentSender.SendIntentException e) { Slog.w(TAG, "Unable to send using IntentSender from uid " + configUid + "; presumably it had been cancelled."); if (DEBUG) { Slog.d(TAG, String.format("SubscriberBroadcast params {%d %d %d %d %s}", configUid, configKey, subscriptionId, subscriptionRuleId, dimensionsValue)); } } } Loading Loading
cmds/statsd/src/guardrail/StatsdStats.h +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public: const static int kDimensionKeySizeHardLimit = 500; const static int kMaxConfigCount = 10; const static int kMaxAlertCountPerConfig = 100; const static int kMaxConditionCountPerConfig = 200; const static int kMaxMetricCountPerConfig = 300; const static int kMaxMatcherCountPerConfig = 500; Loading
cmds/statsd/src/metrics/MetricProducer.h +1 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ public: return byteSizeLocked(); } /* If alert is valid, adds an AnomalyTracker and returns it. If invalid, returns nullptr. */ virtual sp<AnomalyTracker> addAnomalyTracker(const Alert &alert) { std::lock_guard<std::mutex> lock(mMutex); sp<AnomalyTracker> anomalyTracker = new AnomalyTracker(alert, mConfigKey); Loading
cmds/statsd/src/metrics/MetricsManager.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -92,8 +92,10 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, ALOGE("This config is too big! Reject!"); mConfigValid = false; } // TODO: add alert size. 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(key, mAllMetricProducers.size(), mAllConditionTrackers.size(), Loading
cmds/statsd/src/metrics/metrics_manager_util.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -513,11 +513,13 @@ bool initAlerts(const StatsdConfig& config, const int metricIndex = itr->second; sp<MetricProducer> metric = allMetricProducers[metricIndex]; sp<AnomalyTracker> anomalyTracker = metric->addAnomalyTracker(alert); if (anomalyTracker != nullptr) { if (anomalyTracker == nullptr) { // The ALOGW for this invalid alert was already displayed in addAnomalyTracker(). return false; } anomalyTrackerMap.insert(std::make_pair(alert.id(), allAnomalyTrackers.size())); allAnomalyTrackers.push_back(anomalyTracker); } } for (int i = 0; i < config.subscription_size(); ++i) { const Subscription& subscription = config.subscription(i); if (subscription.subscriber_information_case() == Loading
services/core/java/com/android/server/stats/StatsCompanionService.java +5 −6 Original line number Diff line number Diff line Loading @@ -172,7 +172,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { public void sendSubscriberBroadcast(IBinder intentSenderBinder, long configUid, long configKey, long subscriptionId, long subscriptionRuleId, StatsDimensionsValue dimensionsValue) { if (DEBUG) Slog.d(TAG, "Statsd requested to sendSubscriberBroadcast."); enforceCallingPermission(); IntentSender intentSender = new IntentSender(intentSenderBinder); Intent intent = new Intent() Loading @@ -181,16 +180,16 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { .putExtra(StatsManager.EXTRA_STATS_SUBSCRIPTION_ID, subscriptionId) .putExtra(StatsManager.EXTRA_STATS_SUBSCRIPTION_RULE_ID, subscriptionRuleId) .putExtra(StatsManager.EXTRA_STATS_DIMENSIONS_VALUE, dimensionsValue); if (DEBUG) { Slog.d(TAG, String.format("Statsd sendSubscriberBroadcast with params {%d %d %d %d %s}", configUid, configKey, subscriptionId, subscriptionRuleId, dimensionsValue)); } try { intentSender.sendIntent(mContext, CODE_SUBSCRIBER_BROADCAST, intent, null, null); } catch (IntentSender.SendIntentException e) { Slog.w(TAG, "Unable to send using IntentSender from uid " + configUid + "; presumably it had been cancelled."); if (DEBUG) { Slog.d(TAG, String.format("SubscriberBroadcast params {%d %d %d %d %s}", configUid, configKey, subscriptionId, subscriptionRuleId, dimensionsValue)); } } } Loading