Skip to content

Commit 7e848c4

Browse files
committed
[rclpy] Fix spin() incorrectly removing node from executor if already attached
Signed-off-by: Alon <[email protected]>
1 parent 4daae24 commit 7e848c4

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

rclpy/rclpy/__init__.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,14 @@ def spin_once(
296296
:param timeout_sec: Seconds to wait. Block forever if ``None`` or negative. Don't wait if 0.
297297
"""
298298
executor = get_global_executor() if executor is None else executor
299+
node_was_added = False
299300
try:
300-
executor.add_node(node)
301+
302+
node_was_added = executor.add_node(node)
301303
executor.spin_once(timeout_sec=timeout_sec)
302304
finally:
303-
executor.remove_node(node)
305+
if node_was_added:
306+
executor.remove_node(node)
304307

305308

306309
def spin(node: 'Node', executor: Optional['Executor'] = None) -> None:

0 commit comments

Comments
 (0)