Loading cmds/statsd/src/anomaly/AnomalyTracker.cpp +9 −1 Original line number Original line Diff line number Diff line Loading @@ -233,11 +233,19 @@ bool AnomalyTracker::isInRefractoryPeriod(const uint64_t& timestampNs, void AnomalyTracker::informSubscribers(const MetricDimensionKey& key) { void AnomalyTracker::informSubscribers(const MetricDimensionKey& key) { VLOG("informSubscribers called."); VLOG("informSubscribers called."); if (mSubscriptions.empty()) { if (mSubscriptions.empty()) { ALOGE("Attempt to call with no subscribers."); // The config just wanted to log the anomaly. That's fine. VLOG("No Subscriptions were associated with the alert."); return; return; } } for (const Subscription& subscription : mSubscriptions) { for (const Subscription& subscription : mSubscriptions) { if (subscription.probability_of_informing() < 1 && ((float)rand() / RAND_MAX) >= subscription.probability_of_informing()) { // Note that due to float imprecision, 0.0 and 1.0 might not truly mean never/always. // The config writer was advised to use -0.1 and 1.1 for never/always. ALOGI("Fate decided that a subscriber would not be informed."); continue; } switch (subscription.subscriber_information_case()) { switch (subscription.subscriber_information_case()) { case Subscription::SubscriberInformationCase::kIncidentdDetails: case Subscription::SubscriberInformationCase::kIncidentdDetails: if (!GenerateIncidentReport(subscription.incidentd_details(), mAlert, mConfigKey)) { if (!GenerateIncidentReport(subscription.incidentd_details(), mAlert, mConfigKey)) { Loading cmds/statsd/src/statsd_config.proto +2 −0 Original line number Original line Diff line number Diff line Loading @@ -307,6 +307,8 @@ message Subscription { PerfettoDetails perfetto_details = 5; PerfettoDetails perfetto_details = 5; BroadcastSubscriberDetails broadcast_subscriber_details = 6; BroadcastSubscriberDetails broadcast_subscriber_details = 6; } } optional float probability_of_informing = 7 [default = 1.1]; } } message StatsdConfig { message StatsdConfig { Loading Loading
cmds/statsd/src/anomaly/AnomalyTracker.cpp +9 −1 Original line number Original line Diff line number Diff line Loading @@ -233,11 +233,19 @@ bool AnomalyTracker::isInRefractoryPeriod(const uint64_t& timestampNs, void AnomalyTracker::informSubscribers(const MetricDimensionKey& key) { void AnomalyTracker::informSubscribers(const MetricDimensionKey& key) { VLOG("informSubscribers called."); VLOG("informSubscribers called."); if (mSubscriptions.empty()) { if (mSubscriptions.empty()) { ALOGE("Attempt to call with no subscribers."); // The config just wanted to log the anomaly. That's fine. VLOG("No Subscriptions were associated with the alert."); return; return; } } for (const Subscription& subscription : mSubscriptions) { for (const Subscription& subscription : mSubscriptions) { if (subscription.probability_of_informing() < 1 && ((float)rand() / RAND_MAX) >= subscription.probability_of_informing()) { // Note that due to float imprecision, 0.0 and 1.0 might not truly mean never/always. // The config writer was advised to use -0.1 and 1.1 for never/always. ALOGI("Fate decided that a subscriber would not be informed."); continue; } switch (subscription.subscriber_information_case()) { switch (subscription.subscriber_information_case()) { case Subscription::SubscriberInformationCase::kIncidentdDetails: case Subscription::SubscriberInformationCase::kIncidentdDetails: if (!GenerateIncidentReport(subscription.incidentd_details(), mAlert, mConfigKey)) { if (!GenerateIncidentReport(subscription.incidentd_details(), mAlert, mConfigKey)) { Loading
cmds/statsd/src/statsd_config.proto +2 −0 Original line number Original line Diff line number Diff line Loading @@ -307,6 +307,8 @@ message Subscription { PerfettoDetails perfetto_details = 5; PerfettoDetails perfetto_details = 5; BroadcastSubscriberDetails broadcast_subscriber_details = 6; BroadcastSubscriberDetails broadcast_subscriber_details = 6; } } optional float probability_of_informing = 7 [default = 1.1]; } } message StatsdConfig { message StatsdConfig { Loading