From 6d94dfb719f28215a0d9ba21eac1b0f8a6146f9b Mon Sep 17 00:00:00 2001 From: "Maxwell.L" <51860539+maxwelllls@users.noreply.github.com> Date: Fri, 22 Nov 2024 12:31:50 +0800 Subject: [PATCH] Fix: Resolve race condition in MoveGroupSequenceAction (#3125) --- .../src/move_group_sequence_action.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/moveit_planners/pilz_industrial_motion_planner/src/move_group_sequence_action.cpp b/moveit_planners/pilz_industrial_motion_planner/src/move_group_sequence_action.cpp index a8e04ab132..d6bec343d7 100644 --- a/moveit_planners/pilz_industrial_motion_planner/src/move_group_sequence_action.cpp +++ b/moveit_planners/pilz_industrial_motion_planner/src/move_group_sequence_action.cpp @@ -72,8 +72,10 @@ void MoveGroupSequenceAction::initialize() { // start the move action server RCLCPP_INFO_STREAM(getLogger(), "initialize move group sequence action"); + // Use MutuallyExclusiveCallbackGroup to prevent race conditions in callbacks. + // See: https://github.com/moveit/moveit2/issues/3117 for details. action_callback_group_ = - context_->moveit_cpp_->getNode()->create_callback_group(rclcpp::CallbackGroupType::Reentrant); + context_->moveit_cpp_->getNode()->create_callback_group(rclcpp::CallbackGroupType::MutuallyExclusive); move_action_server_ = rclcpp_action::create_server( context_->moveit_cpp_->getNode(), "sequence_move_group", [](const rclcpp_action::GoalUUID& /* unused */,