From 2bbef70dcdf3844e13d91d5033200366fdeccbca Mon Sep 17 00:00:00 2001 From: Francis Tsui Date: Fri, 26 Jul 2024 11:58:01 -0700 Subject: [PATCH] Fix tsan and asan errors. PiperOrigin-RevId: 656481180 --- sharing/transfer_manager.cc | 9 +++++++-- sharing/transfer_manager.h | 7 ++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sharing/transfer_manager.cc b/sharing/transfer_manager.cc index 407e48ea..a00b9cdd 100644 --- a/sharing/transfer_manager.cc +++ b/sharing/transfer_manager.cc @@ -47,6 +47,12 @@ TransferManager::TransferManager(Context* context, absl::string_view endpoint_id) : context_(context), endpoint_id_(endpoint_id) {} +TransferManager::~TransferManager() { + absl::MutexLock lock(&mutex_); + timeout_timer_.reset(); + pending_tasks_.clear(); +} + void TransferManager::Send(std::function task) { absl::MutexLock lock(&mutex_); @@ -100,8 +106,7 @@ bool TransferManager::StartTransfer() { absl::MutexLock lock(&mutex_); NL_LOG(INFO) << "Timed out for endpoint " << endpoint_id_ << " after " - << (kMediumUpgradeTimeout / absl::Milliseconds(1)) - << "ms."; + << kMediumUpgradeTimeout; StopWaitingForHighQualityMedium(); }); diff --git a/sharing/transfer_manager.h b/sharing/transfer_manager.h index ab77da32..e33d1f33 100644 --- a/sharing/transfer_manager.h +++ b/sharing/transfer_manager.h @@ -41,6 +41,8 @@ class TransferManager { TransferManager(Context* context, absl::string_view endpoint_id); + ~TransferManager(); + void Send(std::function task) ABSL_LOCKS_EXCLUDED(mutex_); void OnMediumQualityChanged(Medium current_medium) ABSL_LOCKS_EXCLUDED(mutex_); @@ -51,12 +53,11 @@ class TransferManager { void StopWaitingForHighQualityMedium() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex_); Context* context_; - bool is_waiting_for_high_quality_medium_ = true; std::string endpoint_id_; absl::Mutex mutex_; + bool is_waiting_for_high_quality_medium_ ABSL_GUARDED_BY(mutex_) = true; std::vector> pending_tasks_ ABSL_GUARDED_BY(mutex_); - - std::unique_ptr timeout_timer_ = nullptr; + std::unique_ptr timeout_timer_ ABSL_GUARDED_BY(mutex_) = nullptr; }; } // namespace sharing