diff options
| author | 2019-04-10 19:25:03 -0700 | |
|---|---|---|
| committer | 2019-04-10 20:41:59 -0700 | |
| commit | de473b513894faa4e64e430ee604e5eef39c40bd (patch) | |
| tree | f4c78b657f67fdf075e072d6cd19e97699c3fc86 | |
| parent | 8758e8853065be9224c5b06b8688f50400f2247c (diff) | |
Fix puller callback with gauge/value metric
Allows gauge/value metrics to work with pulled atoms that were
registered after the config was received.
Test: gts
Bug: 130314103
Change-Id: I9cddd28efd464d8bb78da868d8c0d850ffb0235c
| -rw-r--r-- | cmds/statsd/src/external/StatsPullerManager.cpp | 10 | ||||
| -rw-r--r-- | cmds/statsd/src/guardrail/StatsdStats.h | 6 | ||||
| -rw-r--r-- | cmds/statsd/src/stats_log_util.h | 4 |
3 files changed, 15 insertions, 5 deletions
diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp index 13eee5da52cf..d6411a748081 100644 --- a/cmds/statsd/src/external/StatsPullerManager.cpp +++ b/cmds/statsd/src/external/StatsPullerManager.cpp @@ -276,7 +276,8 @@ bool StatsPullerManager::Pull(int tagId, vector<shared_ptr<LogEvent>>* data) { } bool StatsPullerManager::PullerForMatcherExists(int tagId) const { - return kAllPullAtomInfo.find(tagId) != kAllPullAtomInfo.end(); + // Vendor pulled atoms might be registered after we parse the config. + return isVendorPulledAtom(tagId) || kAllPullAtomInfo.find(tagId) != kAllPullAtomInfo.end(); } void StatsPullerManager::updateAlarmLocked() { @@ -449,9 +450,8 @@ void StatsPullerManager::RegisterPullerCallback(int32_t atomTag, const sp<IStatsPullerCallback>& callback) { AutoMutex _l(mLock); // Platform pullers cannot be changed. - if (atomTag < StatsdStats::kMaxPlatformAtomTag) { - VLOG("RegisterPullerCallback: atom tag %d is less than min tag %d", - atomTag, StatsdStats::kMaxPlatformAtomTag); + if (!isVendorPulledAtom(atomTag)) { + VLOG("RegisterPullerCallback: atom tag %d is not vendor pulled", atomTag); return; } VLOG("RegisterPullerCallback: adding puller for tag %d", atomTag); @@ -462,7 +462,7 @@ void StatsPullerManager::RegisterPullerCallback(int32_t atomTag, void StatsPullerManager::UnregisterPullerCallback(int32_t atomTag) { AutoMutex _l(mLock); // Platform pullers cannot be changed. - if (atomTag < StatsdStats::kMaxPlatformAtomTag) { + if (!isVendorPulledAtom(atomTag)) { return; } StatsdStats::getInstance().notePullerCallbackRegistrationChanged(atomTag, /*registered=*/false); diff --git a/cmds/statsd/src/guardrail/StatsdStats.h b/cmds/statsd/src/guardrail/StatsdStats.h index 88ecccc32407..53f12acd3b84 100644 --- a/cmds/statsd/src/guardrail/StatsdStats.h +++ b/cmds/statsd/src/guardrail/StatsdStats.h @@ -160,6 +160,12 @@ public: // Max platform atom tag number. static const int32_t kMaxPlatformAtomTag = 100000; + // Vendor pulled atom start id. + static const int32_t kVendorPulledAtomStartTag = 150000; + + // Max accepted atom id. + static const int32_t kMaxAtomTag = 200000; + static const int64_t kInt64Max = 0x7fffffffffffffffLL; /** diff --git a/cmds/statsd/src/stats_log_util.h b/cmds/statsd/src/stats_log_util.h index cdef87451f63..2a18e22adbb6 100644 --- a/cmds/statsd/src/stats_log_util.h +++ b/cmds/statsd/src/stats_log_util.h @@ -96,6 +96,10 @@ inline bool isPushedAtom(int atomId) { return atomId <= util::kMaxPushedAtomId && atomId > 1; } +inline bool isVendorPulledAtom(int atomId) { + return atomId >= StatsdStats::kVendorPulledAtomStartTag && atomId < StatsdStats::kMaxAtomTag; +} + } // namespace statsd } // namespace os } // namespace android |