From 5adf12c3356e6613744df8363f7730dfd0f227d5 Mon Sep 17 00:00:00 2001 From: "Peter Mitrano (AR)" Date: Tue, 5 Aug 2025 13:30:17 +0200 Subject: [PATCH] Add a clearer warning message, the old one lacked information and was misleading Signed-off-by: Peter Mitrano (AR) --- .../src/lifecycle_node_interface_impl.hpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/rclcpp_lifecycle/src/lifecycle_node_interface_impl.hpp b/rclcpp_lifecycle/src/lifecycle_node_interface_impl.hpp index c292622175..b7b4b5faa0 100644 --- a/rclcpp_lifecycle/src/lifecycle_node_interface_impl.hpp +++ b/rclcpp_lifecycle/src/lifecycle_node_interface_impl.hpp @@ -401,6 +401,7 @@ class LifecycleNode::LifecycleNodeInterfaceImpl constexpr bool publish_update = true; State initial_state; unsigned int current_state_id; + rcl_lifecycle_transition_t const * original_transition{nullptr}; { std::lock_guard lock(state_machine_mutex_); @@ -414,6 +415,9 @@ class LifecycleNode::LifecycleNodeInterfaceImpl // keep the initial state to pass to a transition callback initial_state = State(state_machine_.current_state); + original_transition = + rcl_lifecycle_get_transition_by_id(state_machine_.current_state, transition_id); + if ( rcl_lifecycle_trigger_transition_by_id( &state_machine_, transition_id, publish_update) != RCL_RET_OK) @@ -458,12 +462,14 @@ class LifecycleNode::LifecycleNodeInterfaceImpl current_state_id = state_machine_.current_state->id; } - // error handling ?! + // error handling // TODO(karsten1987): iterate over possible ret value if (cb_return_code == node_interfaces::LifecycleNodeInterface::CallbackReturn::ERROR) { - RCLCPP_WARN( - node_logging_interface_->get_logger(), - "Error occurred while doing error handling."); + if (original_transition) { + RCLCPP_WARN( + node_logging_interface_->get_logger(), + "Callback returned ERROR during the transition: %s", original_transition->label); + } auto error_cb_code = execute_callback(current_state_id, initial_state); auto error_cb_label = get_label_for_return_code(error_cb_code);