From f3bbb8caebc4def53d5b7474ba78791a9e7fd502 Mon Sep 17 00:00:00 2001 From: Janusz Sobczak Date: Wed, 26 Jul 2023 17:27:33 -0700 Subject: [PATCH] Fix race condition in ThroughputRecorder PiperOrigin-RevId: 551361687 --- connections/implementation/analytics/throughput_recorder.cc | 5 +++++ connections/implementation/analytics/throughput_recorder.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/connections/implementation/analytics/throughput_recorder.cc b/connections/implementation/analytics/throughput_recorder.cc index 51f4c492..62d7ac21 100644 --- a/connections/implementation/analytics/throughput_recorder.cc +++ b/connections/implementation/analytics/throughput_recorder.cc @@ -138,6 +138,11 @@ bool ThroughputRecorder::Stop() { return true; } +void ThroughputRecorder::MarkAsSuccess() { + MutexLock lock(&mutex_); + success_ = true; +} + int ThroughputRecorder::CalculateThroughputKBps(int64_t total_byte_size, int64_t total_millis) { if (total_millis > 0) { diff --git a/connections/implementation/analytics/throughput_recorder.h b/connections/implementation/analytics/throughput_recorder.h index d2bacd9c..e6dcdc05 100644 --- a/connections/implementation/analytics/throughput_recorder.h +++ b/connections/implementation/analytics/throughput_recorder.h @@ -87,7 +87,7 @@ class ThroughputRecorder { int64_t GetDurationMillis(); void OnFrameSent(Medium medium, PacketMetaData& packetMetaData); void OnFrameReceived(Medium medium, PacketMetaData& packetMetaData); - void MarkAsSuccess() { success_ = true; } + void MarkAsSuccess(); private: void CalculateDurationTimes(PacketMetaData packetMetaData);