From 8a632f6e83f7fd508fdb81afc5bea1023e906f6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20M=C3=BCller?= Date: Thu, 9 Oct 2025 20:02:27 +0200 Subject: [PATCH 1/2] add workaround for persistent lock file --- controller_manager/controller_manager/spawner.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/controller_manager/controller_manager/spawner.py b/controller_manager/controller_manager/spawner.py index 6903b32d6e..703009cc4c 100644 --- a/controller_manager/controller_manager/spawner.py +++ b/controller_manager/controller_manager/spawner.py @@ -393,6 +393,19 @@ def main(args=None): node.destroy_node() if lock.is_locked: lock.release() + # workaround for https://github.com/ros-controls/ros2_control/issues/2330 + # the lock file is not automatically removed after termination, which hinders other users to start ros2control + if os.path.isfile(lock.lock_file): + try: + os.remove(lock.lock_file) + logger.info( + f"Lock file '{lock.lock_file}' explicitly removed after spawning " + + bcolors.BOLD + + controller_name + + bcolors.ENDC + ) + except PermissionError as err: + logger.fatal(str(err)) rclpy.shutdown() From 7c94167030d431a106c92b99c9f82221e5b00ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20M=C3=BCller?= <32650678+julianmueller@users.noreply.github.com> Date: Sun, 12 Oct 2025 18:58:11 +0200 Subject: [PATCH 2/2] Update controller_manager/controller_manager/spawner.py Co-authored-by: Sai Kishor Kothakota --- controller_manager/controller_manager/spawner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controller_manager/controller_manager/spawner.py b/controller_manager/controller_manager/spawner.py index 703009cc4c..e08c51a47b 100644 --- a/controller_manager/controller_manager/spawner.py +++ b/controller_manager/controller_manager/spawner.py @@ -401,7 +401,7 @@ def main(args=None): logger.info( f"Lock file '{lock.lock_file}' explicitly removed after spawning " + bcolors.BOLD - + controller_name + + f"{controller_names}" + bcolors.ENDC ) except PermissionError as err: