APM RuntimeSetting: record bool histogram when enqueuing a setting fails

Adding a stat to keep track of how frequently APM runtime settings
cannot be successfully enqueued.

Defined in
https://chromium-review.googlesource.com/c/chromium/src/+/2495180.

Bug: webrtc:9138
Change-Id: I33a9105e6fe513a9d0cbb8917a5d576fe47eaa94
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/190144
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32546}
This commit is contained in:
Alessio Bazzica
2020-10-23 12:40:30 +02:00
committed by Commit Bot
parent f598e49c2f
commit 0b10f4605e

View File

@ -708,15 +708,18 @@ AudioProcessingImpl::RuntimeSettingEnqueuer::~RuntimeSettingEnqueuer() =
void AudioProcessingImpl::RuntimeSettingEnqueuer::Enqueue(
RuntimeSetting setting) {
size_t remaining_attempts = 10;
int remaining_attempts = 10;
while (!runtime_settings_.Insert(&setting) && remaining_attempts-- > 0) {
RuntimeSetting setting_to_discard;
if (runtime_settings_.Remove(&setting_to_discard))
if (runtime_settings_.Remove(&setting_to_discard)) {
RTC_LOG(LS_ERROR)
<< "The runtime settings queue is full. Oldest setting discarded.";
}
}
if (remaining_attempts == 0)
if (remaining_attempts == 0) {
RTC_HISTOGRAM_BOOLEAN("WebRTC.Audio.ApmRuntimeSettingCannotEnqueue", 1);
RTC_LOG(LS_ERROR) << "Cannot enqueue a new runtime setting.";
}
}
int AudioProcessingImpl::MaybeInitializeCapture(