diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-07-31 10:49:39 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-08-06 11:21:32 +0100 |
commit | 43d37a6eaf2224c0dda1d1436a0afc2bd34fdddf (patch) | |
tree | 273e6a02584e2222a4f2b7249018dbd487e818e4 /bitbake/lib/hashserv/__init__.py | |
parent | d40d7e43856f176c45cf515644b5f211c708e237 (diff) | |
download | poky-43d37a6eaf2224c0dda1d1436a0afc2bd34fdddf.tar.gz |
bitbake: hashserv: Switch from threads to multiprocessing
There were hard to debug lockups when trying to use threading to start
hashserv as a thread. Switch to multiprocessing which doesn't show the
same locking problems.
(Bitbake rev: be23d887c8e244f1ef961298fbc9214d0fd0968a)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/hashserv/__init__.py')
-rw-r--r-- | bitbake/lib/hashserv/__init__.py | 14 |
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 | |||
13 | import socketserver | 13 | import socketserver |
14 | import queue | 14 | import queue |
15 | import threading | 15 | import threading |
16 | import signal | ||
16 | from datetime import datetime | 17 | from datetime import datetime |
17 | 18 | ||
18 | logger = logging.getLogger('hashserv') | 19 | logger = logging.getLogger('hashserv') |
@@ -147,8 +148,14 @@ class ThreadedHTTPServer(HTTPServer): | |||
147 | self.handlerthread.daemon = False | 148 | self.handlerthread.daemon = False |
148 | 149 | ||
149 | self.handlerthread.start() | 150 | self.handlerthread.start() |
151 | |||
152 | signal.signal(signal.SIGTERM, self.sigterm_exception) | ||
150 | super().serve_forever() | 153 | super().serve_forever() |
151 | 154 | ||
155 | def sigterm_exception(self, signum, stackframe): | ||
156 | self.server_close() | ||
157 | os._exit(0) | ||
158 | |||
152 | def process_request_thread(self): | 159 | def process_request_thread(self): |
153 | while not self.quit: | 160 | while not self.quit: |
154 | try: | 161 | try: |
@@ -163,6 +170,7 @@ class ThreadedHTTPServer(HTTPServer): | |||
163 | self.handle_error(request, client_address) | 170 | self.handle_error(request, client_address) |
164 | finally: | 171 | finally: |
165 | self.shutdown_request(request) | 172 | self.shutdown_request(request) |
173 | os._exit(0) | ||
166 | 174 | ||
167 | def process_request(self, request, client_address): | 175 | def process_request(self, request, client_address): |
168 | self.requestqueue.put((request, client_address)) | 176 | self.requestqueue.put((request, client_address)) |
@@ -208,6 +216,8 @@ def create_server(addr, dbname, prefix=''): | |||
208 | cursor.execute('CREATE INDEX IF NOT EXISTS taskhash_lookup ON tasks_v2 (method, taskhash)') | 216 | cursor.execute('CREATE INDEX IF NOT EXISTS taskhash_lookup ON tasks_v2 (method, taskhash)') |
209 | cursor.execute('CREATE INDEX IF NOT EXISTS outhash_lookup ON tasks_v2 (method, outhash)') | 217 | cursor.execute('CREATE INDEX IF NOT EXISTS outhash_lookup ON tasks_v2 (method, outhash)') |
210 | 218 | ||
211 | logger.info('Starting server on %s', addr) | 219 | ret = ThreadedHTTPServer(addr, Handler) |
220 | |||
221 | logger.info('Starting server on %s\n', ret.server_port) | ||
212 | 222 | ||
213 | return ThreadedHTTPServer(addr, Handler) | 223 | return ret |