Skip to content

fix(rclcpp_action): allow publishing feedback in canceling state (fixes #3283) - #3397

Open
Aaravanand00 wants to merge 1 commit into
ros2:rollingfrom
Aaravanand00:fix-action-feedback-in-canceling-state
Open

Aaravanand00 wants to merge 1 commit into
ros2:rollingfrom
Aaravanand00:fix-action-feedback-in-canceling-state

Conversation

@Aaravanand00

Copy link
Copy Markdown
Contributor

Description

Per ROS 2 REP-161 (Action Design), CANCELING is an active (non-terminal) state where the action server is performing graceful cancellation or cleanup procedures. During this state, an action server should be able to publish progress or feedback to the client (e.g., reporting deceleration or cancellation progress).

Previously, ServerGoalHandle::publish_feedback() checked if (!is_executing()), which inadvertently dropped feedback and emitted a warning whenever a goal transitioned into the CANCELING state (#3283).

This PR:

  • Updates ServerGoalHandle::publish_feedback() to permit publishing when is_executing() or is_canceling().
  • Updates documentation and warning messages accordingly.
  • Adds publish_feedback_canceling and publish_feedback_after_canceled unit tests in rclcpp_action/test/test_server_goal_handle.cpp and verifies feedback callback counters.
  • Adds an end-to-end integration test publish_feedback_canceling in rclcpp_action/test/test_server.cpp.

Fixes #3283

Is this user-facing behavior change?

Yes, action servers can now publish feedback messages while a goal handle is in the CANCELING state, rather than having the feedback ignored with a warning log.

Did you use Generative AI?

Yes I was used to assist with code navigation, test case structuring, and verification.

Additional Information

  • Verified locally with ament_cpplint (0 problems found).
  • Verified locally with ament_uncrustify (0 code style divergence).

@Aaravanand00

Copy link
Copy Markdown
Contributor Author

@jmachowinski @fujitatomoya ptal is this looks good?

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

ABI Compliance Check

✅ Verdict: compatible

Library Verdict Summary
libcomponent_manager.so ✅ compatible No ABI changes detected.
librclcpp.so ✅ compatible No ABI changes detected.
librclcpp_action.so ✅ compatible No ABI changes detected.
librclcpp_lifecycle.so ✅ compatible No ABI changes detected.
✅ libcomponent_manager.so — full abidiff report

Compared:

  • Base: lib-base/libcomponent_manager.so
  • Head: lib-pr/libcomponent_manager.so @ 72658d2
(empty report — no differences printed by abidiff)
✅ librclcpp.so — full abidiff report

Compared:

  • Base: lib-base/librclcpp.so
  • Head: lib-pr/librclcpp.so @ 72658d2
(empty report — no differences printed by abidiff)
✅ librclcpp_action.so — full abidiff report

Compared:

  • Base: lib-base/librclcpp_action.so
  • Head: lib-pr/librclcpp_action.so @ 72658d2
(empty report — no differences printed by abidiff)
✅ librclcpp_lifecycle.so — full abidiff report

Compared:

  • Base: lib-base/librclcpp_lifecycle.so
  • Head: lib-pr/librclcpp_lifecycle.so @ 72658d2
(empty report — no differences printed by abidiff)

Updated for commit 72658d2 · check run · suppressions: /home/runner/work/_temp/ros2-abi-suppressions.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cannot publish action feedback in CANCELING state

1 participant