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
This commit is contained in:
Olivier Gaillard
2019-02-27 17:09:40 +00:00
parent 5d38dc3f6c
commit e35b282c0c
2 changed files with 6 additions and 2 deletions

View File

@@ -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

View File

@@ -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.