Loading cmds/statsd/src/metrics/GaugeMetricProducer.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,8 @@ GaugeMetricProducer::GaugeMetricProducer( StatsdStats::kAtomDimensionKeySizeLimitMap.end() ? StatsdStats::kAtomDimensionKeySizeLimitMap.at(pullTagId).second : StatsdStats::kDimensionKeySizeHardLimit), mGaugeAtomsPerDimensionLimit(metric.max_num_gauge_atoms_per_bucket()) { mGaugeAtomsPerDimensionLimit(metric.max_num_gauge_atoms_per_bucket()), mSplitBucketForAppUpgrade(metric.split_bucket_for_app_upgrade()) { mCurrentSlicedBucket = std::make_shared<DimToGaugeAtomsMap>(); mCurrentSlicedBucketForAnomaly = std::make_shared<DimToValMap>(); int64_t bucketSizeMills = 0; Loading cmds/statsd/src/metrics/GaugeMetricProducer.h +6 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,9 @@ public: const int64_t version) override { std::lock_guard<std::mutex> lock(mMutex); if (!mSplitBucketForAppUpgrade) { return; } if (eventTimeNs > getCurrentBucketEndTimeNs()) { // Flush full buckets on the normal path up to the latest bucket boundary. flushIfNeededLocked(eventTimeNs); Loading Loading @@ -176,11 +179,14 @@ private: const size_t mGaugeAtomsPerDimensionLimit; const bool mSplitBucketForAppUpgrade; FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsWithCondition); FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsWithSlicedCondition); FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsNoCondition); FRIEND_TEST(GaugeMetricProducerTest, TestPushedEventsWithUpgrade); FRIEND_TEST(GaugeMetricProducerTest, TestPulledWithUpgrade); FRIEND_TEST(GaugeMetricProducerTest, TestPulledWithAppUpgradeDisabled); FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsAnomalyDetection); FRIEND_TEST(GaugeMetricProducerTest, TestFirstBucket); FRIEND_TEST(GaugeMetricProducerTest, TestPullOnTrigger); Loading cmds/statsd/src/metrics/ValueMetricProducer.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -105,7 +105,8 @@ ValueMetricProducer::ValueMetricProducer( mUseZeroDefaultBase(metric.use_zero_default_base()), mHasGlobalBase(false), mMaxPullDelayNs(metric.max_pull_delay_sec() > 0 ? metric.max_pull_delay_sec() * NS_PER_SEC : StatsdStats::kPullMaxDelayNs) { : StatsdStats::kPullMaxDelayNs), mSplitBucketForAppUpgrade(metric.split_bucket_for_app_upgrade()) { int64_t bucketSizeMills = 0; if (metric.has_bucket()) { bucketSizeMills = TimeUnitToBucketSizeInMillisGuardrailed(key.GetUid(), metric.bucket()); Loading cmds/statsd/src/metrics/ValueMetricProducer.h +6 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,9 @@ public: void notifyAppUpgrade(const int64_t& eventTimeNs, const string& apk, const int uid, const int64_t version) override { std::lock_guard<std::mutex> lock(mMutex); if (!mSplitBucketForAppUpgrade) { return; } if (mIsPulled && mCondition) { pullAndMatchEventsLocked(eventTimeNs - 1); } Loading Loading @@ -185,6 +188,8 @@ private: const int64_t mMaxPullDelayNs; const bool mSplitBucketForAppUpgrade; FRIEND_TEST(ValueMetricProducerTest, TestPulledEventsNoCondition); FRIEND_TEST(ValueMetricProducerTest, TestPulledEventsWithFiltering); FRIEND_TEST(ValueMetricProducerTest, TestPulledEventsTakeAbsoluteValueOnReset); Loading @@ -193,6 +198,7 @@ private: FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithUpgrade); FRIEND_TEST(ValueMetricProducerTest, TestPulledValueWithUpgrade); FRIEND_TEST(ValueMetricProducerTest, TestPulledValueWithUpgradeWhileConditionFalse); FRIEND_TEST(ValueMetricProducerTest, TestPulledWithAppUpgradeDisabled); FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithoutCondition); FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithCondition); FRIEND_TEST(ValueMetricProducerTest, TestAnomalyDetection); Loading cmds/statsd/src/statsd_config.proto +4 −0 Original line number Diff line number Diff line Loading @@ -244,6 +244,8 @@ message GaugeMetric { optional int64 max_num_gauge_atoms_per_bucket = 11 [default = 10]; optional int32 max_pull_delay_sec = 13 [default = 10]; optional bool split_bucket_for_app_upgrade = 14 [default = true]; } message ValueMetric { Loading Loading @@ -290,6 +292,8 @@ message ValueMetric { optional bool skip_zero_diff_output = 14 [default = true]; optional int32 max_pull_delay_sec = 16 [default = 10]; optional bool split_bucket_for_app_upgrade = 17 [default = true]; } message Alert { Loading Loading
cmds/statsd/src/metrics/GaugeMetricProducer.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,8 @@ GaugeMetricProducer::GaugeMetricProducer( StatsdStats::kAtomDimensionKeySizeLimitMap.end() ? StatsdStats::kAtomDimensionKeySizeLimitMap.at(pullTagId).second : StatsdStats::kDimensionKeySizeHardLimit), mGaugeAtomsPerDimensionLimit(metric.max_num_gauge_atoms_per_bucket()) { mGaugeAtomsPerDimensionLimit(metric.max_num_gauge_atoms_per_bucket()), mSplitBucketForAppUpgrade(metric.split_bucket_for_app_upgrade()) { mCurrentSlicedBucket = std::make_shared<DimToGaugeAtomsMap>(); mCurrentSlicedBucketForAnomaly = std::make_shared<DimToValMap>(); int64_t bucketSizeMills = 0; Loading
cmds/statsd/src/metrics/GaugeMetricProducer.h +6 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,9 @@ public: const int64_t version) override { std::lock_guard<std::mutex> lock(mMutex); if (!mSplitBucketForAppUpgrade) { return; } if (eventTimeNs > getCurrentBucketEndTimeNs()) { // Flush full buckets on the normal path up to the latest bucket boundary. flushIfNeededLocked(eventTimeNs); Loading Loading @@ -176,11 +179,14 @@ private: const size_t mGaugeAtomsPerDimensionLimit; const bool mSplitBucketForAppUpgrade; FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsWithCondition); FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsWithSlicedCondition); FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsNoCondition); FRIEND_TEST(GaugeMetricProducerTest, TestPushedEventsWithUpgrade); FRIEND_TEST(GaugeMetricProducerTest, TestPulledWithUpgrade); FRIEND_TEST(GaugeMetricProducerTest, TestPulledWithAppUpgradeDisabled); FRIEND_TEST(GaugeMetricProducerTest, TestPulledEventsAnomalyDetection); FRIEND_TEST(GaugeMetricProducerTest, TestFirstBucket); FRIEND_TEST(GaugeMetricProducerTest, TestPullOnTrigger); Loading
cmds/statsd/src/metrics/ValueMetricProducer.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -105,7 +105,8 @@ ValueMetricProducer::ValueMetricProducer( mUseZeroDefaultBase(metric.use_zero_default_base()), mHasGlobalBase(false), mMaxPullDelayNs(metric.max_pull_delay_sec() > 0 ? metric.max_pull_delay_sec() * NS_PER_SEC : StatsdStats::kPullMaxDelayNs) { : StatsdStats::kPullMaxDelayNs), mSplitBucketForAppUpgrade(metric.split_bucket_for_app_upgrade()) { int64_t bucketSizeMills = 0; if (metric.has_bucket()) { bucketSizeMills = TimeUnitToBucketSizeInMillisGuardrailed(key.GetUid(), metric.bucket()); Loading
cmds/statsd/src/metrics/ValueMetricProducer.h +6 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,9 @@ public: void notifyAppUpgrade(const int64_t& eventTimeNs, const string& apk, const int uid, const int64_t version) override { std::lock_guard<std::mutex> lock(mMutex); if (!mSplitBucketForAppUpgrade) { return; } if (mIsPulled && mCondition) { pullAndMatchEventsLocked(eventTimeNs - 1); } Loading Loading @@ -185,6 +188,8 @@ private: const int64_t mMaxPullDelayNs; const bool mSplitBucketForAppUpgrade; FRIEND_TEST(ValueMetricProducerTest, TestPulledEventsNoCondition); FRIEND_TEST(ValueMetricProducerTest, TestPulledEventsWithFiltering); FRIEND_TEST(ValueMetricProducerTest, TestPulledEventsTakeAbsoluteValueOnReset); Loading @@ -193,6 +198,7 @@ private: FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithUpgrade); FRIEND_TEST(ValueMetricProducerTest, TestPulledValueWithUpgrade); FRIEND_TEST(ValueMetricProducerTest, TestPulledValueWithUpgradeWhileConditionFalse); FRIEND_TEST(ValueMetricProducerTest, TestPulledWithAppUpgradeDisabled); FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithoutCondition); FRIEND_TEST(ValueMetricProducerTest, TestPushedEventsWithCondition); FRIEND_TEST(ValueMetricProducerTest, TestAnomalyDetection); Loading
cmds/statsd/src/statsd_config.proto +4 −0 Original line number Diff line number Diff line Loading @@ -244,6 +244,8 @@ message GaugeMetric { optional int64 max_num_gauge_atoms_per_bucket = 11 [default = 10]; optional int32 max_pull_delay_sec = 13 [default = 10]; optional bool split_bucket_for_app_upgrade = 14 [default = true]; } message ValueMetric { Loading Loading @@ -290,6 +292,8 @@ message ValueMetric { optional bool skip_zero_diff_output = 14 [default = true]; optional int32 max_pull_delay_sec = 16 [default = 10]; optional bool split_bucket_for_app_upgrade = 17 [default = true]; } message Alert { Loading