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

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

Merge "Add log source filtering in statsd to filter out spams."

parents 33cddc18 d10f7b1c
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -114,7 +114,8 @@ void StatsLogProcessor::OnLogEvent(const LogEvent& msg) {

void StatsLogProcessor::OnConfigUpdated(const ConfigKey& key, const StatsdConfig& config) {
    ALOGD("Updated configuration for key %s", key.ToString().c_str());
    unique_ptr<MetricsManager> newMetricsManager = std::make_unique<MetricsManager>(key, config, mTimeBaseSec);

    sp<MetricsManager> newMetricsManager = new MetricsManager(key, config, mTimeBaseSec, mUidMap);

    auto it = mMetricsManagers.find(key);
    if (it == mMetricsManagers.end() && mMetricsManagers.size() > StatsdStats::kMaxConfigCount) {
@@ -125,7 +126,12 @@ void StatsLogProcessor::OnConfigUpdated(const ConfigKey& key, const StatsdConfig
    if (newMetricsManager->isConfigValid()) {
        mUidMap->OnConfigUpdated(key);
        newMetricsManager->setAnomalyMonitor(mAnomalyMonitor);
        mMetricsManagers[key] = std::move(newMetricsManager);
        if (config.log_source().package().size() > 0) {
            // We have to add listener after the MetricsManager is constructed because it's
            // not safe to create wp or sp from this pointer inside its constructor.
            mUidMap->addListener(newMetricsManager.get());
        }
        mMetricsManagers[key] = newMetricsManager;
        // Why doesn't this work? mMetricsManagers.insert({key, std::move(newMetricsManager)});
        VLOG("StatsdConfig valid");
    } else {
+1 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ public:
private:
    mutable mutex mBroadcastTimesMutex;

    std::unordered_map<ConfigKey, std::unique_ptr<MetricsManager>> mMetricsManagers;
    std::unordered_map<ConfigKey, sp<MetricsManager>> mMetricsManagers;

    std::unordered_map<ConfigKey, long> mLastBroadcastTimes;

+16 −4
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@ status_t StatsService::command(FILE* in, FILE* out, FILE* err, Vector<String8>&
        }

        if (!args[0].compare(String8("print-uid-map"))) {
            return cmd_print_uid_map(out);
            return cmd_print_uid_map(out, args);
        }

        if (!args[0].compare(String8("dump-report"))) {
@@ -248,9 +248,10 @@ void StatsService::print_cmd_help(FILE* out) {
    fprintf(out, "   # adb shell start\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "usage: adb shell cmd stats print-uid-map \n");
    fprintf(out, "usage: adb shell cmd stats print-uid-map [PKG]\n");
    fprintf(out, "\n");
    fprintf(out, "  Prints the UID, app name, version mapping.\n");
    fprintf(out, "  PKG           Optional package name to print the uids of the package\n");
    fprintf(out, "\n");
    fprintf(out, "\n");
    fprintf(out, "usage: adb shell cmd stats pull-source [int] \n");
@@ -497,8 +498,19 @@ status_t StatsService::cmd_print_stats(FILE* out, const Vector<String8>& args) {
    return NO_ERROR;
}

status_t StatsService::cmd_print_uid_map(FILE* out) {
status_t StatsService::cmd_print_uid_map(FILE* out, const Vector<String8>& args) {
    if (args.size() > 1) {
        string pkg;
        pkg.assign(args[1].c_str(), args[1].size());
        auto uids = mUidMap->getAppUid(pkg);
        fprintf(out, "%s -> [ ", pkg.c_str());
        for (const auto& uid : uids) {
            fprintf(out, "%d ", uid);
        }
        fprintf(out, "]\n");
    } else {
        mUidMap->printUidMap(out);
    }
    return NO_ERROR;
}

+1 −1
Original line number Diff line number Diff line
@@ -158,7 +158,7 @@ private:
    /**
     * Print the mapping of uids to package names.
     */
    status_t cmd_print_uid_map(FILE* out);
    status_t cmd_print_uid_map(FILE* out, const Vector<String8>& args);

    /**
     * Flush the data to disk.
+6 −0
Original line number Diff line number Diff line
@@ -248,6 +248,12 @@ StatsdConfig build_fake_config() {
    details->add_section(12);
    details->add_section(13);*/

    AllowedLogSource* logSource = config.mutable_log_source();
    logSource->add_uid(1000);
    logSource->add_uid(0);
    logSource->add_package("com.android.statsd.dogfood");
    logSource->add_package("com.android.bluetooth");

    // Count process state changes, slice by uid.
    metric = config.add_count_metric();
    metric->set_name("METRIC_2");
Loading