From c96a082c70daa8cd95da40c26edf825d370e06c4 Mon Sep 17 00:00:00 2001 From: Charlie Yan Date: Tue, 1 Jul 2025 12:13:41 -0700 Subject: [PATCH 1/3] rosbridge_websocket cooperative shutdown necessary changes --- rosbridge_server/scripts/rosbridge_websocket.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rosbridge_server/scripts/rosbridge_websocket.py b/rosbridge_server/scripts/rosbridge_websocket.py index e3ad40a6c..bb0c6a6b9 100755 --- a/rosbridge_server/scripts/rosbridge_websocket.py +++ b/rosbridge_server/scripts/rosbridge_websocket.py @@ -339,7 +339,7 @@ def main(args=None): rclpy.init(args=args) node = RosbridgeWebsocketNode() - executor = rclpy.executors.SingleThreadedExecutor() + executor = rclpy.executors.MultiThreadedExecutor() executor.add_node(node) def spin_ros(): @@ -355,6 +355,7 @@ def spin_ros(): rclpy.shutdown() except KeyboardInterrupt: print("Exiting due to SIGINT") + spin_callback.stop() finally: shutdown_hook() # shutdown hook to stop the server From fb59009ee8a404de66190d30c6d888340585a660 Mon Sep 17 00:00:00 2001 From: Charlie Yan Date: Tue, 8 Jul 2025 11:08:45 -0700 Subject: [PATCH 2/3] switch back to singlethread, check for ok BEFORE spinning also --- rosbridge_server/scripts/rosbridge_websocket.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rosbridge_server/scripts/rosbridge_websocket.py b/rosbridge_server/scripts/rosbridge_websocket.py index bb0c6a6b9..242535a5a 100755 --- a/rosbridge_server/scripts/rosbridge_websocket.py +++ b/rosbridge_server/scripts/rosbridge_websocket.py @@ -339,10 +339,13 @@ def main(args=None): rclpy.init(args=args) node = RosbridgeWebsocketNode() - executor = rclpy.executors.MultiThreadedExecutor() + executor = rclpy.executors.SingleThreadedExecutor() executor.add_node(node) def spin_ros(): + if not rclpy.ok(): + shutdown_hook() + return executor.spin_once(timeout_sec=0.01) if not rclpy.ok(): shutdown_hook() From 1c93df439ce8c8258af12c1291436e1231b16170 Mon Sep 17 00:00:00 2001 From: Charlie Yan Date: Tue, 15 Jul 2025 08:31:50 -0700 Subject: [PATCH 3/3] address MatthijsBurgh comments --- rosbridge_server/scripts/rosbridge_websocket.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rosbridge_server/scripts/rosbridge_websocket.py b/rosbridge_server/scripts/rosbridge_websocket.py index 242535a5a..6b4becc20 100755 --- a/rosbridge_server/scripts/rosbridge_websocket.py +++ b/rosbridge_server/scripts/rosbridge_websocket.py @@ -347,8 +347,6 @@ def spin_ros(): shutdown_hook() return executor.spin_once(timeout_sec=0.01) - if not rclpy.ok(): - shutdown_hook() spin_callback = PeriodicCallback(spin_ros, 1) spin_callback.start() @@ -358,8 +356,8 @@ def spin_ros(): rclpy.shutdown() except KeyboardInterrupt: print("Exiting due to SIGINT") - spin_callback.stop() finally: + spin_callback.stop() shutdown_hook() # shutdown hook to stop the server