From a1df329500de15df8c9152f63b962a678b4a3ab9 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Mon, 8 Aug 2022 12:38:45 -0700 Subject: [PATCH] Exit with code 0 if ExternalShutdownException is raised (#581) * Exit with code 0 if ExternalShutdownException is raised This is an expected exception from the executor on a keyboard interrupt, so I don't think it should be an error. Signed-off-by: Jacob Perron --- demo_nodes_py/demo_nodes_py/services/add_two_ints_server.py | 6 +----- demo_nodes_py/demo_nodes_py/topics/listener.py | 6 +----- demo_nodes_py/demo_nodes_py/topics/listener_qos.py | 4 +--- demo_nodes_py/demo_nodes_py/topics/listener_serialized.py | 6 +----- demo_nodes_py/demo_nodes_py/topics/talker.py | 6 +----- demo_nodes_py/demo_nodes_py/topics/talker_qos.py | 4 +--- .../rclpy/quality_of_service_demo_py/deadline.py | 5 +---- .../rclpy/quality_of_service_demo_py/incompatible_qos.py | 4 +--- .../quality_of_service_demo_py/message_lost_listener.py | 6 +----- .../quality_of_service_demo_py/qos_overrides_listener.py | 6 +----- .../quality_of_service_demo_py/qos_overrides_talker.py | 6 +----- 11 files changed, 11 insertions(+), 48 deletions(-) diff --git a/demo_nodes_py/demo_nodes_py/services/add_two_ints_server.py b/demo_nodes_py/demo_nodes_py/services/add_two_ints_server.py index d67f193d1..806e41bc5 100644 --- a/demo_nodes_py/demo_nodes_py/services/add_two_ints_server.py +++ b/demo_nodes_py/demo_nodes_py/services/add_two_ints_server.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys - from example_interfaces.srv import AddTwoInts import rclpy @@ -41,10 +39,8 @@ def main(args=None): try: rclpy.spin(node) - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: # Destroy the node explicitly # (optional - Done automatically when node is garbage collected) diff --git a/demo_nodes_py/demo_nodes_py/topics/listener.py b/demo_nodes_py/demo_nodes_py/topics/listener.py index f355af9b6..e52354a2b 100644 --- a/demo_nodes_py/demo_nodes_py/topics/listener.py +++ b/demo_nodes_py/demo_nodes_py/topics/listener.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys - import rclpy from rclpy.executors import ExternalShutdownException from rclpy.node import Node @@ -37,10 +35,8 @@ def main(args=None): node = Listener() try: rclpy.spin(node) - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: node.destroy_node() rclpy.try_shutdown() diff --git a/demo_nodes_py/demo_nodes_py/topics/listener_qos.py b/demo_nodes_py/demo_nodes_py/topics/listener_qos.py index 64ec5de5c..5c9ce74d9 100644 --- a/demo_nodes_py/demo_nodes_py/topics/listener_qos.py +++ b/demo_nodes_py/demo_nodes_py/topics/listener_qos.py @@ -68,10 +68,8 @@ def main(argv=sys.argv[1:]): while rclpy.ok() and cycle_count < args.number_of_cycles: rclpy.spin_once(node) cycle_count += 1 - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: node.destroy_node() rclpy.try_shutdown() diff --git a/demo_nodes_py/demo_nodes_py/topics/listener_serialized.py b/demo_nodes_py/demo_nodes_py/topics/listener_serialized.py index 0d8919718..d768cf23e 100644 --- a/demo_nodes_py/demo_nodes_py/topics/listener_serialized.py +++ b/demo_nodes_py/demo_nodes_py/topics/listener_serialized.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys - import rclpy from rclpy.executors import ExternalShutdownException from rclpy.node import Node @@ -43,10 +41,8 @@ def main(args=None): try: rclpy.spin(serialized_subscriber) - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: # Destroy the node explicitly # (optional - otherwise it will be done automatically diff --git a/demo_nodes_py/demo_nodes_py/topics/talker.py b/demo_nodes_py/demo_nodes_py/topics/talker.py index fb1e707e8..119c342a0 100644 --- a/demo_nodes_py/demo_nodes_py/topics/talker.py +++ b/demo_nodes_py/demo_nodes_py/topics/talker.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys - import rclpy from rclpy.executors import ExternalShutdownException from rclpy.node import Node @@ -45,10 +43,8 @@ def main(args=None): try: rclpy.spin(node) - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: node.destroy_node() rclpy.try_shutdown() diff --git a/demo_nodes_py/demo_nodes_py/topics/talker_qos.py b/demo_nodes_py/demo_nodes_py/topics/talker_qos.py index 4fd03c68e..ee2b9a166 100644 --- a/demo_nodes_py/demo_nodes_py/topics/talker_qos.py +++ b/demo_nodes_py/demo_nodes_py/topics/talker_qos.py @@ -75,10 +75,8 @@ def main(argv=sys.argv[1:]): while rclpy.ok() and cycle_count < args.number_of_cycles: rclpy.spin_once(node) cycle_count += 1 - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: node.destroy_node() rclpy.try_shutdown() diff --git a/quality_of_service_demo/rclpy/quality_of_service_demo_py/deadline.py b/quality_of_service_demo/rclpy/quality_of_service_demo_py/deadline.py index 79b2abe2a..5c6de8450 100644 --- a/quality_of_service_demo/rclpy/quality_of_service_demo_py/deadline.py +++ b/quality_of_service_demo/rclpy/quality_of_service_demo_py/deadline.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. import argparse -import sys from quality_of_service_demo_py.common_nodes import Listener from quality_of_service_demo_py.common_nodes import Talker @@ -72,10 +71,8 @@ def main(args=None): executor.add_node(talker) try: executor.spin() - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: rclpy.try_shutdown() diff --git a/quality_of_service_demo/rclpy/quality_of_service_demo_py/incompatible_qos.py b/quality_of_service_demo/rclpy/quality_of_service_demo_py/incompatible_qos.py index e1724a85e..0610a60b4 100644 --- a/quality_of_service_demo/rclpy/quality_of_service_demo_py/incompatible_qos.py +++ b/quality_of_service_demo/rclpy/quality_of_service_demo_py/incompatible_qos.py @@ -141,10 +141,8 @@ def main(args=None): try: while talker.publish_count < num_msgs: executor.spin_once() - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - return 1 finally: rclpy.try_shutdown() diff --git a/quality_of_service_demo/rclpy/quality_of_service_demo_py/message_lost_listener.py b/quality_of_service_demo/rclpy/quality_of_service_demo_py/message_lost_listener.py index 82dd23bae..5ca9ec123 100644 --- a/quality_of_service_demo/rclpy/quality_of_service_demo_py/message_lost_listener.py +++ b/quality_of_service_demo/rclpy/quality_of_service_demo_py/message_lost_listener.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys - import rclpy from rclpy.executors import ExternalShutdownException from rclpy.executors import SingleThreadedExecutor @@ -69,10 +67,8 @@ def main(): try: executor.spin() - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: rclpy.try_shutdown() diff --git a/quality_of_service_demo/rclpy/quality_of_service_demo_py/qos_overrides_listener.py b/quality_of_service_demo/rclpy/quality_of_service_demo_py/qos_overrides_listener.py index 24106aa85..c0e63b6fe 100644 --- a/quality_of_service_demo/rclpy/quality_of_service_demo_py/qos_overrides_listener.py +++ b/quality_of_service_demo/rclpy/quality_of_service_demo_py/qos_overrides_listener.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys - import rclpy from rclpy.executors import ExternalShutdownException from rclpy.node import Node @@ -53,10 +51,8 @@ def main(args=None): node = Listener() try: rclpy.spin(node) - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: rclpy.try_shutdown() node.destroy_node() diff --git a/quality_of_service_demo/rclpy/quality_of_service_demo_py/qos_overrides_talker.py b/quality_of_service_demo/rclpy/quality_of_service_demo_py/qos_overrides_talker.py index 7872a17ab..1d0e164ab 100644 --- a/quality_of_service_demo/rclpy/quality_of_service_demo_py/qos_overrides_talker.py +++ b/quality_of_service_demo/rclpy/quality_of_service_demo_py/qos_overrides_talker.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys - import rclpy from rclpy.executors import ExternalShutdownException from rclpy.node import Node @@ -61,10 +59,8 @@ def main(args=None): try: rclpy.spin(node) - except KeyboardInterrupt: + except (KeyboardInterrupt, ExternalShutdownException): pass - except ExternalShutdownException: - sys.exit(1) finally: rclpy.try_shutdown() node.destroy_node()