Merge "Configurable data error action in value metric" into pi-dev
am: 5ca38cafe8
Change-Id: Ic4ce7443e381e42e6b33f93021c6344d18abb9c2
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -164,6 +164,8 @@ private:
|
||||
|
||||
const size_t mDimensionHardLimit;
|
||||
|
||||
const bool mUseAbsoluteValueOnReset;
|
||||
|
||||
FRIEND_TEST(ValueMetricProducerTest, TestNonDimensionalEvents);
|
||||
FRIEND_TEST(ValueMetricProducerTest, TestEventsWithNonSlicedCondition);
|
||||
FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithUpgrade);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user