From 56984e8e92784eebf859212c736d6fb186a0a4e6 Mon Sep 17 00:00:00 2001 From: Arjun Satish Date: Mon, 16 Jul 2018 15:21:06 -0700 Subject: [PATCH 1/2] MINOR: Add thread dumps if broker node cannot be stopped Signed-off-by: Arjun Satish --- tests/kafkatest/services/kafka/kafka.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/kafkatest/services/kafka/kafka.py b/tests/kafkatest/services/kafka/kafka.py index cb8e00d44b34..f44e229a0e43 100644 --- a/tests/kafkatest/services/kafka/kafka.py +++ b/tests/kafkatest/services/kafka/kafka.py @@ -288,7 +288,16 @@ def stop_node(self, node, clean_shutdown=True): for pid in pids: node.account.signal(pid, sig, allow_fail=False) - wait_until(lambda: len(self.pids(node)) == 0, timeout_sec=60, err_msg="Kafka node failed to stop") + + try: + wait_until(lambda: len(self.pids(node)) == 0, timeout_sec=60, err_msg="Kafka node failed to stop") + except Exception: + self.thread_dump(node) + raise + + def thread_dump(self, node): + for pid in self.pids(node): + node.account.signal(pid, signal.SIGQUIT, allow_fail=False) def clean_node(self, node): JmxMixin.clean_node(self, node) From 9665796aeabebe84253c82b3cd2f38690c9bb14d Mon Sep 17 00:00:00 2001 From: Arjun Satish Date: Wed, 18 Jul 2018 11:51:30 -0700 Subject: [PATCH 2/2] MINOR: Allow SIGQUIT to fail and catch all exceptions in thread_dump Signed-off-by: Arjun Satish --- tests/kafkatest/services/kafka/kafka.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/kafkatest/services/kafka/kafka.py b/tests/kafkatest/services/kafka/kafka.py index f44e229a0e43..8eee575f4a60 100644 --- a/tests/kafkatest/services/kafka/kafka.py +++ b/tests/kafkatest/services/kafka/kafka.py @@ -297,7 +297,10 @@ def stop_node(self, node, clean_shutdown=True): def thread_dump(self, node): for pid in self.pids(node): - node.account.signal(pid, signal.SIGQUIT, allow_fail=False) + try: + node.account.signal(pid, signal.SIGQUIT, allow_fail=True) + except: + self.logger.warn("Could not dump threads on node") def clean_node(self, node): JmxMixin.clean_node(self, node)