From e35b282c0c2e71a1b2642980048381f4b1cbc104 Mon Sep 17 00:00:00 2001 From: Olivier Gaillard Date: Wed, 27 Feb 2019 17:09:40 +0000 Subject: [PATCH] Reset the condition to the initial state. For conditions without a condition, the initial state is true, not unknown. Test: atest statsd_test Change-Id: Iba27a8ea82af9b9e5e1f8ee17f091f344674d14a --- cmds/statsd/src/metrics/MetricProducer.h | 6 +++++- cmds/statsd/src/metrics/ValueMetricProducer.cpp | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cmds/statsd/src/metrics/MetricProducer.h b/cmds/statsd/src/metrics/MetricProducer.h index 99cb5d4389c70..046f9963b351a 100644 --- a/cmds/statsd/src/metrics/MetricProducer.h +++ b/cmds/statsd/src/metrics/MetricProducer.h @@ -69,7 +69,7 @@ public: mTimeBaseNs(timeBaseNs), mCurrentBucketStartTimeNs(timeBaseNs), mCurrentBucketNum(0), - mCondition(conditionIndex >= 0 ? ConditionState::kUnknown : ConditionState::kTrue), + mCondition(initialCondition(conditionIndex)), mConditionSliced(false), mWizard(wizard), mConditionTrackerIndex(conditionIndex), @@ -82,6 +82,10 @@ public: virtual ~MetricProducer(){}; + ConditionState initialCondition(const int conditionIndex) const { + return conditionIndex >= 0 ? ConditionState::kUnknown : ConditionState::kTrue; + } + /** * Forces this metric to split into a partial bucket right now. If we're past a full bucket, we * first call the standard flushing code to flush up to the latest full bucket. Then we call diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.cpp b/cmds/statsd/src/metrics/ValueMetricProducer.cpp index 9de62a2cce038..27ee57013fdaa 100644 --- a/cmds/statsd/src/metrics/ValueMetricProducer.cpp +++ b/cmds/statsd/src/metrics/ValueMetricProducer.cpp @@ -394,7 +394,7 @@ void ValueMetricProducer::onConditionChangedLocked(const bool condition, invalidateCurrentBucket(); // Something weird happened. If we received another event if the future, the condition might // be wrong. - mCondition = ConditionState::kUnknown; + mCondition = initialCondition(mConditionTrackerIndex); } // This part should alway be called.