Skip to content

Commit

Permalink
Fix long wait during shutdown in WaitForTopics (ros2#314)
Browse files Browse the repository at this point in the history
Signed-off-by: Keng12 <k.chaig1@gmail.com>
  • Loading branch information
Keng12 committed Apr 29, 2022
1 parent a14156e commit 5b457c3
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions launch_testing_ros/launch_testing_ros/wait_for_topics.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,7 @@ def __init__(self, topic_tuples, timeout=5.0):
self._prepare_ros_node()

# Start spinning
self.__running = True
self.__ros_spin_thread = Thread(target=self._spin_function)
self.__ros_spin_thread = Thread(target=self.__ros_executor.spin)
self.__ros_spin_thread.start()

def _prepare_ros_node(self):
Expand All @@ -69,19 +68,15 @@ def _prepare_ros_node(self):
self.__ros_node = _WaitForTopicsNode(name=node_name, node_context=self.__ros_context)
self.__ros_executor.add_node(self.__ros_node)

def _spin_function(self):
while self.__running:
self.__ros_executor.spin_once(1.0)

def wait(self):
self.__ros_node.start_subscribers(self.topic_tuples)
return self.__ros_node.msg_event_object.wait(self.timeout)

def shutdown(self):
self.__running = False
# Shutdown context before joining thread
self.__ros_context.try_shutdown()
self.__ros_spin_thread.join()
self.__ros_node.destroy_node()
rclpy.shutdown(context=self.__ros_context)

def topics_received(self):
"""Topics that received at least one message."""
Expand Down

0 comments on commit 5b457c3

Please sign in to comment.