From 92f85f3d23d1605ac4fce5e2d1c3f0f1a00934c1 Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Thu, 5 Feb 2026 07:50:39 +0900 Subject: [PATCH] Prevents the Future result from being set twice. (#1599) Signed-off-by: Tomoya Fujita Co-authored-by: Nadav Elkabets (cherry picked from commit a348801f7a8ee6384d260680702efb2e39dd77d0) --- 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 1635d83a8..4938e5c14 100644 --- a/rclpy/rclpy/action/server.py +++ b/rclpy/rclpy/action/server.py @@ -161,15 +161,18 @@ def executing(self): def succeed(self, response=None): self._update_state(_rclpy.GoalEvent.SUCCEED) - self._set_result(response) + if response is not None: + self._set_result(response) def abort(self, response=None): self._update_state(_rclpy.GoalEvent.ABORT) - self._set_result(response) + if response is not None: + self._set_result(response) def canceled(self, response=None): self._update_state(_rclpy.GoalEvent.CANCELED) - self._set_result(response) + if response is not None: + self._set_result(response) def destroy(self): with self._lock: