Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f31667f4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Statsd guardrail for Alerts"

parents 4db3ca08 1476ef24
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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);
+4 −2
Original line number Diff line number Diff line
@@ -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(),
+5 −3
Original line number Diff line number Diff line
@@ -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() ==
+5 −6
Original line number Diff line number Diff line
@@ -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()
@@ -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));
            }
        }
    }