From 30cbb65b4315820b89333e3683e4c350ec173a81 Mon Sep 17 00:00:00 2001 From: Tobias Henkel Date: Wed, 27 Dec 2017 10:17:29 +0100 Subject: Centrally register stack dump handler We want the stack dump handler to be present in all zuul apps so this can be registered in a central place. Change-Id: I0c4a97d6ee983aa4d57928682dfb6eeffd050197 --- zuul/cmd/__init__.py | 4 ++++ zuul/cmd/executor.py | 2 -- zuul/cmd/merger.py | 2 -- zuul/cmd/scheduler.py | 1 - zuul/cmd/web.py | 2 -- 5 files changed, 4 insertions(+), 7 deletions(-) diff --git a/zuul/cmd/__init__.py b/zuul/cmd/__init__.py index 236fd9f44..bdb93978f 100755 --- a/zuul/cmd/__init__.py +++ b/zuul/cmd/__init__.py @@ -176,6 +176,10 @@ class ZuulDaemonApp(ZuulApp): pid_fn = self.getPidFile() pid = pid_file_module.TimeoutPIDLockFile(pid_fn, 10) + # Early register the stack dump handler for all zuul apps. This makes + # it possible to also gather stack dumps during startup hangs. + signal.signal(signal.SIGUSR2, stack_dump_handler) + if self.args.nodaemon: self.run() else: diff --git a/zuul/cmd/executor.py b/zuul/cmd/executor.py index c82deb748..c600dc96d 100755 --- a/zuul/cmd/executor.py +++ b/zuul/cmd/executor.py @@ -130,8 +130,6 @@ class Executor(zuul.cmd.ZuulDaemonApp): log_streaming_port=self.finger_port) self.executor.start() - signal.signal(signal.SIGUSR2, zuul.cmd.stack_dump_handler) - if self.args.nodaemon: signal.signal(signal.SIGTERM, self.exit_handler) while True: diff --git a/zuul/cmd/merger.py b/zuul/cmd/merger.py index 2916a0b3c..8c4798923 100755 --- a/zuul/cmd/merger.py +++ b/zuul/cmd/merger.py @@ -62,8 +62,6 @@ class Merger(zuul.cmd.ZuulDaemonApp): self.connections) self.merger.start() - signal.signal(signal.SIGUSR2, zuul.cmd.stack_dump_handler) - if self.args.nodaemon: signal.signal(signal.SIGTERM, self.exit_handler) while True: diff --git a/zuul/cmd/scheduler.py b/zuul/cmd/scheduler.py index d94e9ea17..7748a80a7 100755 --- a/zuul/cmd/scheduler.py +++ b/zuul/cmd/scheduler.py @@ -123,7 +123,6 @@ class Scheduler(zuul.cmd.ZuulDaemonApp): import zuul.webapp import zuul.zk - signal.signal(signal.SIGUSR2, zuul.cmd.stack_dump_handler) if (self.config.has_option('gearman_server', 'start') and self.config.getboolean('gearman_server', 'start')): self.start_gear_server() diff --git a/zuul/cmd/web.py b/zuul/cmd/web.py index 4687de653..ad3062ff0 100755 --- a/zuul/cmd/web.py +++ b/zuul/cmd/web.py @@ -106,8 +106,6 @@ class WebServer(zuul.cmd.ZuulDaemonApp): self.configure_connections() - signal.signal(signal.SIGUSR2, zuul.cmd.stack_dump_handler) - try: self._run() except Exception: -- cgit v1.2.1