Merge "Configurable data error action in value metric" into pi-dev

am: 5ca38cafe8

Change-Id: Ic4ce7443e381e42e6b33f93021c6344d18abb9c2
This commit is contained in:
Chenjie Yu
2018-05-14 15:57:30 -07:00
committed by android-build-merger
3 changed files with 15 additions and 5 deletions

View File

@@ -87,7 +87,8 @@ ValueMetricProducer::ValueMetricProducer(const ConfigKey& key, const ValueMetric
mDimensionHardLimit(StatsdStats::kAtomDimensionKeySizeLimitMap.find(pullTagId) !=
StatsdStats::kAtomDimensionKeySizeLimitMap.end()
? StatsdStats::kAtomDimensionKeySizeLimitMap.at(pullTagId).second
: StatsdStats::kDimensionKeySizeHardLimit) {
: StatsdStats::kDimensionKeySizeHardLimit),
mUseAbsoluteValueOnReset(metric.use_absolute_value_on_reset()) {
// TODO: valuemetric for pushed events may need unlimited bucket length
int64_t bucketSizeMills = 0;
if (metric.has_bucket()) {
@@ -393,15 +394,20 @@ void ValueMetricProducer::onMatchedLogEventInternalLocked(
}
} else {
// Generally we expect value to be monotonically increasing.
// If not, there was a reset event. We take the absolute value as
// diff in this case.
// If not, take absolute value or drop it, based on config.
if (interval.startUpdated) {
if (value >= interval.start) {
interval.sum += (value - interval.start);
interval.hasValue = true;
} else {
interval.sum += value;
if (mUseAbsoluteValueOnReset) {
interval.sum += value;
interval.hasValue = true;
} else {
VLOG("Dropping data for atom %d, prev: %lld, now: %lld", mPullTagId,
(long long)interval.start, (long long)value);
}
}
interval.hasValue = true;
interval.startUpdated = false;
} else {
VLOG("No start for matching end %lld", (long long)value);

View File

@@ -164,6 +164,8 @@ private:
const size_t mDimensionHardLimit;
const bool mUseAbsoluteValueOnReset;
FRIEND_TEST(ValueMetricProducerTest, TestNonDimensionalEvents);
FRIEND_TEST(ValueMetricProducerTest, TestEventsWithNonSlicedCondition);
FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithUpgrade);

View File

@@ -265,6 +265,8 @@ message ValueMetric {
optional AggregationType aggregation_type = 8 [default = SUM];
optional int64 min_bucket_size_nanos = 10;
optional bool use_absolute_value_on_reset = 11 [default = false];
}
message Alert {