From 0189b7c2146e558218b8f0775d8e006cd062787d Mon Sep 17 00:00:00 2001 From: Tomoya Kimura Date: Wed, 30 Aug 2023 10:55:16 +0900 Subject: [PATCH] Fix SharedFuture from async_send_request never becomes valid (#2044) (#2076) (#6) (cherry picked from commit 66b19448b0520b15a9e6c28483863b2a4351c2f6) Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Co-authored-by: Lei Liu <64953129+llapx@users.noreply.github.com> --- rclcpp/include/rclcpp/client.hpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/rclcpp/include/rclcpp/client.hpp b/rclcpp/include/rclcpp/client.hpp index e88fa8a949..67d023b14e 100644 --- a/rclcpp/include/rclcpp/client.hpp +++ b/rclcpp/include/rclcpp/client.hpp @@ -792,16 +792,14 @@ class Client : public ClientBase async_send_request_impl(const Request & request, CallbackInfoVariant value) { int64_t sequence_number; + std::lock_guard lock(pending_requests_mutex_); rcl_ret_t ret = rcl_send_request(get_client_handle().get(), &request, &sequence_number); if (RCL_RET_OK != ret) { rclcpp::exceptions::throw_from_rcl_error(ret, "failed to send request"); } - { - std::lock_guard lock(pending_requests_mutex_); - pending_requests_.try_emplace( - sequence_number, - std::make_pair(std::chrono::system_clock::now(), std::move(value))); - } + pending_requests_.try_emplace( + sequence_number, + std::make_pair(std::chrono::system_clock::now(), std::move(value))); return sequence_number; }