Loading cmds/statsd/src/StatsLogProcessor.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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 { Loading cmds/statsd/src/StatsLogProcessor.h +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading cmds/statsd/src/StatsService.cpp +16 −4 Original line number Diff line number Diff line Loading @@ -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"))) { Loading Loading @@ -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"); Loading Loading @@ -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; } Loading cmds/statsd/src/StatsService.h +1 −1 Original line number Diff line number Diff line Loading @@ -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. Loading cmds/statsd/src/config/ConfigManager.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
cmds/statsd/src/StatsLogProcessor.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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 { Loading
cmds/statsd/src/StatsLogProcessor.h +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
cmds/statsd/src/StatsService.cpp +16 −4 Original line number Diff line number Diff line Loading @@ -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"))) { Loading Loading @@ -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"); Loading Loading @@ -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; } Loading
cmds/statsd/src/StatsService.h +1 −1 Original line number Diff line number Diff line Loading @@ -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. Loading
cmds/statsd/src/config/ConfigManager.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -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