diff --git a/rclcpp/include/rclcpp/experimental/intra_process_manager.hpp b/rclcpp/include/rclcpp/experimental/intra_process_manager.hpp index 89c39652e2..db44fa9983 100644 --- a/rclcpp/include/rclcpp/experimental/intra_process_manager.hpp +++ b/rclcpp/include/rclcpp/experimental/intra_process_manager.hpp @@ -577,11 +577,14 @@ class IntraProcessManager auto server = get_matching_intra_process_action_server(ipc_action_client_id); if (server) { + { + std::unique_lock lock(mutex_); + clients_uuid_to_id_[goal_id] = ipc_action_client_id; + } + server->store_ipc_action_goal_request( ipc_action_client_id, std::move(goal_request)); - std::unique_lock lock(mutex_); - clients_uuid_to_id_[goal_id] = ipc_action_client_id; return true; } return false;