summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tej Singh <singhtejinder@google.com> 2019-04-10 19:25:03 -0700
committer Tej Singh <singhtejinder@google.com> 2019-04-10 20:41:59 -0700
commitde473b513894faa4e64e430ee604e5eef39c40bd (patch)
treef4c78b657f67fdf075e072d6cd19e97699c3fc86
parent8758e8853065be9224c5b06b8688f50400f2247c (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.cpp10
-rw-r--r--cmds/statsd/src/guardrail/StatsdStats.h6
-rw-r--r--cmds/statsd/src/stats_log_util.h4
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