summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/hashserv/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/hashserv/__init__.py')
-rw-r--r--bitbake/lib/hashserv/__init__.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/bitbake/lib/hashserv/__init__.py b/bitbake/lib/hashserv/__init__.py
index 86aa7e9de6..1d5e08ee5a 100644
--- a/bitbake/lib/hashserv/__init__.py
+++ b/bitbake/lib/hashserv/__init__.py
@@ -13,6 +13,7 @@ import logging
import socketserver
import queue
import threading
+import signal
from datetime import datetime
logger = logging.getLogger('hashserv')
@@ -147,8 +148,14 @@ class ThreadedHTTPServer(HTTPServer):
self.handlerthread.daemon = False
self.handlerthread.start()
+
+ signal.signal(signal.SIGTERM, self.sigterm_exception)
super().serve_forever()
+ def sigterm_exception(self, signum, stackframe):
+ self.server_close()
+ os._exit(0)
+
def process_request_thread(self):
while not self.quit:
try:
@@ -163,6 +170,7 @@ class ThreadedHTTPServer(HTTPServer):
self.handle_error(request, client_address)
finally:
self.shutdown_request(request)
+ os._exit(0)
def process_request(self, request, client_address):
self.requestqueue.put((request, client_address))
@@ -208,6 +216,8 @@ def create_server(addr, dbname, prefix=''):
cursor.execute('CREATE INDEX IF NOT EXISTS taskhash_lookup ON tasks_v2 (method, taskhash)')
cursor.execute('CREATE INDEX IF NOT EXISTS outhash_lookup ON tasks_v2 (method, outhash)')
- logger.info('Starting server on %s', addr)
+ ret = ThreadedHTTPServer(addr, Handler)
+
+ logger.info('Starting server on %s\n', ret.server_port)
- return ThreadedHTTPServer(addr, Handler)
+ return ret