diff options
| -rw-r--r-- | cmds/statsd/src/metrics/ValueMetricProducer.cpp | 5 | ||||
| -rw-r--r-- | cmds/statsd/src/metrics/duration_helper/OringDurationTracker.cpp | 5 |
2 files changed, 7 insertions, 3 deletions
diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.cpp b/cmds/statsd/src/metrics/ValueMetricProducer.cpp index f03ce4550bc4..58a9a38b83d4 100644 --- a/cmds/statsd/src/metrics/ValueMetricProducer.cpp +++ b/cmds/statsd/src/metrics/ValueMetricProducer.cpp @@ -187,8 +187,9 @@ void ValueMetricProducer::onStateChanged(int64_t eventTimeNs, int32_t atomId, VLOG("ValueMetric %lld onStateChanged time %lld, State %d, key %s, %d -> %d", (long long)mMetricId, (long long)eventTimeNs, atomId, primaryKey.toString().c_str(), oldState.mValue.int_value, newState.mValue.int_value); - // If condition is not true, we do not need to pull for this state change. - if (mCondition != ConditionState::kTrue) { + // If condition is not true or metric is not active, we do not need to pull + // for this state change. + if (mCondition != ConditionState::kTrue || !mIsActive) { return; } diff --git a/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.cpp b/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.cpp index 19b2fe89989d..0d49bbc269a3 100644 --- a/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.cpp +++ b/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.cpp @@ -329,7 +329,10 @@ void OringDurationTracker::onConditionChanged(bool condition, const int64_t time void OringDurationTracker::onStateChanged(const int64_t timestamp, const int32_t atomId, const FieldValue& newState) { - // If no keys are being tracked, update the current state key and return. + // Nothing needs to be done on a state change if we have not seen a start + // event, the metric is currently not active, or condition is false. + // For these cases, no keys are being tracked in mStarted, so update + // the current state key and return. if (mStarted.empty()) { updateCurrentStateKey(atomId, newState); return; |