From 0ce923d4c28a218cbbe218347041d72ebaacbd9e Mon Sep 17 00:00:00 2001 From: Sai Kishor Kothakota Date: Tue, 23 Jul 2024 14:46:40 +0200 Subject: [PATCH] add try to lock mutex and print to not to obsruct RT thread --- controller_manager/src/controller_manager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/controller_manager/src/controller_manager.cpp b/controller_manager/src/controller_manager.cpp index 68ee9e6b52..8b028ef13d 100644 --- a/controller_manager/src/controller_manager.cpp +++ b/controller_manager/src/controller_manager.cpp @@ -2156,7 +2156,12 @@ void ControllerManager::read(const rclcpp::Time & time, const rclcpp::Duration & void ControllerManager::manage_switch() { - std::lock_guard guard(switch_params_.mutex); + std::unique_lock guard(switch_params_.mutex, std::try_to_lock); + if (!guard.owns_lock()) + { + RCLCPP_WARN(get_logger(), "Unable to lock switch mutex. Retrying in next cycle."); + return; + } // Ask hardware interfaces to change mode if (!resource_manager_->perform_command_mode_switch( activate_command_interface_request_, deactivate_command_interface_request_))