diff options
| author | 2018-01-24 18:18:24 +0000 | |
|---|---|---|
| committer | 2018-01-24 18:18:24 +0000 | |
| commit | adb4fc73b0d9be2ad5f76c9e7248440625b80b75 (patch) | |
| tree | 964bf06ab633b33c24e14147e636e87f03969381 | |
| parent | 2cef59dc7b027aa499d06882e7f864c1fc971329 (diff) | |
| parent | 68985805f26f5da6cc6b63934cb00fbff2741ca9 (diff) | |
Merge "Avoid processing log event when there is no uid field."
| -rw-r--r-- | cmds/statsd/src/StatsLogProcessor.cpp | 18 | ||||
| -rw-r--r-- | cmds/statsd/src/logd/LogEvent.h | 6 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/main.cpp | 31 |
3 files changed, 48 insertions, 7 deletions
diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp index 7a7a2f617e6a..0eaefb74f582 100644 --- a/cmds/statsd/src/StatsLogProcessor.cpp +++ b/cmds/statsd/src/StatsLogProcessor.cpp @@ -92,10 +92,20 @@ void StatsLogProcessor::onAnomalyAlarmFired( void StatsLogProcessor::mapIsolatedUidToHostUidIfNecessaryLocked(LogEvent* event) const { std::vector<Field> uidFields; - findFields( - event->getFieldValueMap(), - buildAttributionUidFieldMatcher(event->GetTagId(), Position::ANY), - &uidFields); + if (android::util::kAtomsWithAttributionChain.find(event->GetTagId()) != + android::util::kAtomsWithAttributionChain.end()) { + findFields( + event->getFieldValueMap(), + buildAttributionUidFieldMatcher(event->GetTagId(), Position::ANY), + &uidFields); + } else if (android::util::kAtomsWithUidField.find(event->GetTagId()) != + android::util::kAtomsWithUidField.end()) { + findFields( + event->getFieldValueMap(), + buildSimpleAtomFieldMatcher(event->GetTagId(), 1 /* uid is always the 1st field. */), + &uidFields); + } + for (size_t i = 0; i < uidFields.size(); ++i) { DimensionsValue* value = event->findFieldValueOrNull(uidFields[i]); if (value != nullptr && value->value_case() == DimensionsValue::ValueCase::kValueInt) { diff --git a/cmds/statsd/src/logd/LogEvent.h b/cmds/statsd/src/logd/LogEvent.h index fdfa32eac8ae..3d6984cea97d 100644 --- a/cmds/statsd/src/logd/LogEvent.h +++ b/cmds/statsd/src/logd/LogEvent.h @@ -58,14 +58,14 @@ public: /** * Get the timestamp associated with this event. */ - uint64_t GetTimestampNs() const { return mTimestampNs; } + inline uint64_t GetTimestampNs() const { return mTimestampNs; } /** * Get the tag for this event. */ - int GetTagId() const { return mTagId; } + inline int GetTagId() const { return mTagId; } - uint32_t GetUid() const { + inline uint32_t GetUid() const { return mLogUid; } diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp index e0e6b5883e32..3dbb50306cc6 100644 --- a/tools/stats_log_api_gen/main.cpp +++ b/tools/stats_log_api_gen/main.cpp @@ -317,6 +317,7 @@ write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl &attributio fprintf(out, "\n"); fprintf(out, "#include <stdint.h>\n"); fprintf(out, "#include <vector>\n"); + fprintf(out, "#include <set>\n"); fprintf(out, "\n"); fprintf(out, "namespace android {\n"); @@ -361,6 +362,36 @@ write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl &attributio fprintf(out, "};\n"); fprintf(out, "\n"); + fprintf(out, "const static std::set<int> kAtomsWithUidField = {\n"); + for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); + atom != atoms.decls.end(); atom++) { + for (vector<AtomField>::const_iterator field = atom->fields.begin(); + field != atom->fields.end(); field++) { + if (field->name == "uid") { + string constant = make_constant_name(atom->name); + fprintf(out, " %s,\n", constant.c_str()); + break; + } + } + } + fprintf(out, "};\n"); + fprintf(out, "\n"); + + fprintf(out, "const static std::set<int> kAtomsWithAttributionChain = {\n"); + for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); + atom != atoms.decls.end(); atom++) { + for (vector<AtomField>::const_iterator field = atom->fields.begin(); + field != atom->fields.end(); field++) { + if (field->javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) { + string constant = make_constant_name(atom->name); + fprintf(out, " %s,\n", constant.c_str()); + break; + } + } + } + fprintf(out, "};\n"); + fprintf(out, "\n"); + fprintf(out, "const static int kMaxPushedAtomId = %d;\n\n", maxPushedAtomId); // Print write methods |