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

Commit 57206c82 authored by Tej Singh's avatar Tej Singh
Browse files

Partial config update: various metadata

Partial config update for:
- atoms allowed from any uid
- no report metrics
- installer/version strings in uidmap
- hash strings
- annotations
- config ttl
- persisting configs locally

Mostly just reset these fields.

BYPASS_INCLUSIVE_LANGUAGE_REASON=proto field that cant be renamed

Test: atest statsd_test
Bug: 162323476
Change-Id: I5e636f8eb240bd3d44f08a87811b1dfefc428191
parent 34eac183
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -294,6 +294,7 @@ cc_test {
        "tests/e2e/Anomaly_duration_sum_e2e_test.cpp",
        "tests/e2e/Attribution_e2e_test.cpp",
        "tests/e2e/ConfigTtl_e2e_test.cpp",
        "tests/e2e/ConfigUpdate_e2e_test.cpp",
        "tests/e2e/CountMetric_e2e_test.cpp",
        "tests/e2e/DurationMetric_e2e_test.cpp",
        "tests/e2e/GaugeMetric_e2e_pull_test.cpp",
+4 −3
Original line number Diff line number Diff line
@@ -520,10 +520,10 @@ void StatsLogProcessor::GetActiveConfigsLocked(const int uid, vector<int64_t>& o
}

void StatsLogProcessor::OnConfigUpdated(const int64_t timestampNs, const ConfigKey& key,
                                        const StatsdConfig& config) {
                                        const StatsdConfig& config, bool modularUpdate) {
    std::lock_guard<std::mutex> lock(mMetricsMutex);
    WriteDataToDiskLocked(key, timestampNs, CONFIG_UPDATED, NO_TIME_CONSTRAINTS);
    OnConfigUpdatedLocked(timestampNs, key, config);
    OnConfigUpdatedLocked(timestampNs, key, config, modularUpdate);
}

void StatsLogProcessor::OnConfigUpdatedLocked(const int64_t timestampNs, const ConfigKey& key,
@@ -720,7 +720,8 @@ void StatsLogProcessor::resetConfigsLocked(const int64_t timestampNs,
    for (const auto& key : configs) {
        StatsdConfig config;
        if (StorageManager::readConfigFromDisk(key, &config)) {
            OnConfigUpdatedLocked(timestampNs, key, config);
            // Force a full update when resetting a config.
            OnConfigUpdatedLocked(timestampNs, key, config, /*modularUpdate=*/false);
            StatsdStats::getInstance().noteConfigReset(key);
        } else {
            ALOGE("Failed to read backup config from disk for : %s", key.ToString().c_str());
+6 −2
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ public:
    void OnLogEvent(LogEvent* event);

    void OnConfigUpdated(const int64_t timestampNs, const ConfigKey& key,
                         const StatsdConfig& config);
                         const StatsdConfig& config, bool modularUpdate = false);
    void OnConfigRemoved(const ConfigKey& key);

    size_t GetMetricsSize(const ConfigKey& key) const;
@@ -188,7 +188,7 @@ private:
    void resetIfConfigTtlExpiredLocked(const int64_t timestampNs);

    void OnConfigUpdatedLocked(const int64_t currentTimestampNs, const ConfigKey& key,
                               const StatsdConfig& config, bool modularUpdate = false);
                               const StatsdConfig& config, bool modularUpdate);

    void GetActiveConfigsLocked(const int uid, vector<int64_t>& outActiveConfigs);

@@ -338,6 +338,10 @@ private:
    FRIEND_TEST(MetricActivationE2eTest, TestCountMetricWithSameDeactivation);
    FRIEND_TEST(MetricActivationE2eTest, TestCountMetricWithTwoMetricsTwoDeactivations);

    FRIEND_TEST(ConfigUpdateE2eTest, TestHashStrings);
    FRIEND_TEST(ConfigUpdateE2eTest, TestUidMapVersionStringInstaller);
    FRIEND_TEST(ConfigUpdateE2eTest, TestConfigTtl);

    FRIEND_TEST(CountMetricE2eTest, TestInitialConditionChanges);
    FRIEND_TEST(CountMetricE2eTest, TestSlicedState);
    FRIEND_TEST(CountMetricE2eTest, TestSlicedStateWithMap);
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ public:
     * A configuration was added or updated.
     */
    virtual void OnConfigUpdated(const int64_t timestampNs, const ConfigKey& key,
                                 const StatsdConfig& config) = 0;
                                 const StatsdConfig& config, bool modularUpdate = false) = 0;

    /**
     * A configuration was removed.
+17 −0
Original line number Diff line number Diff line
@@ -188,6 +188,23 @@ bool MetricsManager::updateConfig(const StatsdConfig& config, const int64_t time
    mAlertTrackerMap = newAlertTrackerMap;
    mAllPeriodicAlarmTrackers = newPeriodicAlarmTrackers;

    mTtlNs = config.has_ttl_in_seconds() ? config.ttl_in_seconds() * NS_PER_SEC : -1;
    refreshTtl(currentTimeNs);

    mHashStringsInReport = config.hash_strings_in_metric_report();
    mVersionStringsInReport = config.version_strings_in_metric_report();
    mInstallerInReport = config.installer_in_metric_report();
    mWhitelistedAtomIds.clear();
    mWhitelistedAtomIds.insert(config.whitelisted_atom_ids().begin(),
                               config.whitelisted_atom_ids().end());
    mShouldPersistHistory = config.persist_locally();

    // Store the sub-configs used.
    mAnnotations.clear();
    for (const auto& annotation : config.annotation()) {
        mAnnotations.emplace_back(annotation.field_int64(), annotation.field_int32());
    }

    mAllowedUid.clear();
    mAllowedPkg.clear();
    mDefaultPullUids.clear();
Loading