summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-01-17 23:07:01 +0000
committerGerrit Code Review <review@openstack.org>2018-01-17 23:07:01 +0000
commit5406476c7bb0eec26ebdf0eee7953ed071755c3e (patch)
treefe99f1e88235aa9a7450f7911716cb35ba532cef
parenta8ed7fce3610db9bf7f3bc9c977c627435fc6958 (diff)
parent00d7ea51fd1633a141b2e97291baa425be1680c8 (diff)
downloadzuul-5406476c7bb0eec26ebdf0eee7953ed071755c3e.tar.gz
Merge "Register term_handler for all zuul apps" into feature/zuulv3
-rwxr-xr-xzuul/cmd/__init__.py10
-rwxr-xr-xzuul/cmd/executor.py14
-rw-r--r--zuul/cmd/fingergw.py18
-rwxr-xr-xzuul/cmd/merger.py14
-rwxr-xr-xzuul/cmd/scheduler.py13
-rwxr-xr-xzuul/cmd/web.py6
6 files changed, 17 insertions, 58 deletions
diff --git a/zuul/cmd/__init__.py b/zuul/cmd/__init__.py
index b2992195c..bf11c6fc9 100755
--- a/zuul/cmd/__init__.py
+++ b/zuul/cmd/__init__.py
@@ -171,6 +171,14 @@ class ZuulDaemonApp(ZuulApp, metaclass=abc.ABCMeta):
return pid_fn
@abc.abstractmethod
+ def exit_handler(self, signum, frame):
+ """
+ This is a signal handler which is called on SIGINT and SIGTERM and must
+ take care of stopping the application.
+ """
+ pass
+
+ @abc.abstractmethod
def run(self):
"""
This is the main run method of the application.
@@ -189,6 +197,8 @@ class ZuulDaemonApp(ZuulApp, metaclass=abc.ABCMeta):
signal.signal(signal.SIGUSR2, stack_dump_handler)
if self.args.nodaemon:
+ signal.signal(signal.SIGTERM, self.exit_handler)
+ signal.signal(signal.SIGINT, self.exit_handler)
self.run()
else:
# Exercise the pidfile before we do anything else (including
diff --git a/zuul/cmd/executor.py b/zuul/cmd/executor.py
index b050a5979..5b06f0cca 100755
--- a/zuul/cmd/executor.py
+++ b/zuul/cmd/executor.py
@@ -17,7 +17,6 @@
import logging
import os
import sys
-import signal
import tempfile
import zuul.cmd
@@ -51,8 +50,6 @@ class Executor(zuul.cmd.ZuulDaemonApp):
def exit_handler(self, signum, frame):
self.executor.stop()
- self.executor.join()
- sys.exit(0)
def start_log_streamer(self):
pipe_read, pipe_write = os.pipe()
@@ -109,16 +106,7 @@ class Executor(zuul.cmd.ZuulDaemonApp):
log_streaming_port=self.finger_port)
self.executor.start()
- if self.args.nodaemon:
- signal.signal(signal.SIGTERM, self.exit_handler)
- while True:
- try:
- signal.pause()
- except KeyboardInterrupt:
- print("Ctrl + C: asking executor to exit nicely...\n")
- self.exit_handler(signal.SIGINT, None)
- else:
- self.executor.join()
+ self.executor.join()
def main():
diff --git a/zuul/cmd/fingergw.py b/zuul/cmd/fingergw.py
index 920eed8f2..0d47f0848 100644
--- a/zuul/cmd/fingergw.py
+++ b/zuul/cmd/fingergw.py
@@ -14,7 +14,6 @@
# under the License.
import logging
-import signal
import sys
import zuul.cmd
@@ -47,6 +46,9 @@ class FingerGatewayApp(zuul.cmd.ZuulDaemonApp):
if self.args.command:
self.args.nodaemon = True
+ def exit_handler(self, signum, frame):
+ self.stop()
+
def run(self):
'''
Main entry point for the FingerGatewayApp.
@@ -84,19 +86,7 @@ class FingerGatewayApp(zuul.cmd.ZuulDaemonApp):
self.log.info('Starting Zuul finger gateway app')
self.gateway.start()
- if self.args.nodaemon:
- # NOTE(Shrews): When running in non-daemon mode, although sending
- # the 'stop' command via the command socket will shutdown the
- # gateway, it's still necessary to Ctrl+C to stop the app.
- while True:
- try:
- signal.pause()
- except KeyboardInterrupt:
- print("Ctrl + C: asking gateway to exit nicely...\n")
- self.stop()
- break
- else:
- self.gateway.wait()
+ self.gateway.wait()
self.log.info('Stopped Zuul finger gateway app')
diff --git a/zuul/cmd/merger.py b/zuul/cmd/merger.py
index 8c4798923..390191f4a 100755
--- a/zuul/cmd/merger.py
+++ b/zuul/cmd/merger.py
@@ -14,7 +14,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-import signal
import sys
import zuul.cmd
@@ -44,8 +43,6 @@ class Merger(zuul.cmd.ZuulDaemonApp):
def exit_handler(self, signum, frame):
self.merger.stop()
- self.merger.join()
- sys.exit(0)
def run(self):
# See comment at top of file about zuul imports
@@ -62,16 +59,7 @@ class Merger(zuul.cmd.ZuulDaemonApp):
self.connections)
self.merger.start()
- if self.args.nodaemon:
- signal.signal(signal.SIGTERM, self.exit_handler)
- while True:
- try:
- signal.pause()
- except KeyboardInterrupt:
- print("Ctrl + C: asking merger to exit nicely...\n")
- self.exit_handler(signal.SIGINT, None)
- else:
- self.merger.join()
+ self.merger.join()
def main():
diff --git a/zuul/cmd/scheduler.py b/zuul/cmd/scheduler.py
index 7748a80a7..3cffa1010 100755
--- a/zuul/cmd/scheduler.py
+++ b/zuul/cmd/scheduler.py
@@ -63,9 +63,7 @@ class Scheduler(zuul.cmd.ZuulDaemonApp):
def exit_handler(self, signum, frame):
self.sched.exit()
- self.sched.join()
self.stop_gear_server()
- sys.exit(0)
def start_gear_server(self):
pipe_read, pipe_write = os.pipe()
@@ -175,16 +173,7 @@ class Scheduler(zuul.cmd.ZuulDaemonApp):
signal.signal(signal.SIGHUP, self.reconfigure_handler)
- if self.args.nodaemon:
- signal.signal(signal.SIGTERM, self.exit_handler)
- while True:
- try:
- signal.pause()
- except KeyboardInterrupt:
- print("Ctrl + C: asking scheduler to exit nicely...\n")
- self.exit_handler(signal.SIGINT, None)
- else:
- self.sched.join()
+ self.sched.join()
def main():
diff --git a/zuul/cmd/web.py b/zuul/cmd/web.py
index ad3062ff0..78392db51 100755
--- a/zuul/cmd/web.py
+++ b/zuul/cmd/web.py
@@ -89,12 +89,6 @@ class WebServer(zuul.cmd.ZuulDaemonApp):
name='web')
self.thread.start()
- try:
- signal.pause()
- except KeyboardInterrupt:
- print("Ctrl + C: asking web server to exit nicely...\n")
- self.exit_handler(signal.SIGINT, None)
-
self.thread.join()
loop.stop()
loop.close()