Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ca38caf authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

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


    const size_t mDimensionHardLimit;
    const size_t mDimensionHardLimit;


    const bool mUseAbsoluteValueOnReset;

    FRIEND_TEST(ValueMetricProducerTest, TestNonDimensionalEvents);
    FRIEND_TEST(ValueMetricProducerTest, TestNonDimensionalEvents);
    FRIEND_TEST(ValueMetricProducerTest, TestEventsWithNonSlicedCondition);
    FRIEND_TEST(ValueMetricProducerTest, TestEventsWithNonSlicedCondition);
    FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithUpgrade);
    FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithUpgrade);
+2 −0
Original line number Original line Diff line number Diff line
@@ -265,6 +265,8 @@ message ValueMetric {
  optional AggregationType aggregation_type = 8 [default = SUM];
  optional AggregationType aggregation_type = 8 [default = SUM];


  optional int64 min_bucket_size_nanos = 10;
  optional int64 min_bucket_size_nanos = 10;

  optional bool use_absolute_value_on_reset = 11 [default = false];
}
}


message Alert {
message Alert {