From 5e95dc829aa051da7a366bc4c2b5e7aed596f1d6 Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Wed, 4 Feb 2026 20:50:31 +0900 Subject: [PATCH] Prevents the Future result from being set twice. Signed-off-by: Tomoya Fujita Co-authored-by: Nadav Elkabets --- rclpy/rclpy/action/server.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/rclpy/rclpy/action/server.py b/rclpy/rclpy/action/server.py index 7d48decd9..4d8de71a8 100644 --- a/rclpy/rclpy/action/server.py +++ b/rclpy/rclpy/action/server.py @@ -215,15 +215,18 @@ def executing(self) -> None: def succeed(self, response: Optional[ResultT] = None) -> None: self._update_state(_rclpy.GoalEvent.SUCCEED) - self._set_result(response) + if response is not None: + self._set_result(response) def abort(self, response: Optional[ResultT] = None) -> None: self._update_state(_rclpy.GoalEvent.ABORT) - self._set_result(response) + if response is not None: + self._set_result(response) def canceled(self, response: Optional[ResultT] = None) -> None: self._update_state(_rclpy.GoalEvent.CANCELED) - self._set_result(response) + if response is not None: + self._set_result(response) def destroy(self) -> None: with self._lock: