diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/prserv/serv.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py index 7864594bb6..e4c1c2a6aa 100644 --- a/bitbake/lib/prserv/serv.py +++ b/bitbake/lib/prserv/serv.py | |||
@@ -13,6 +13,7 @@ except ImportError: | |||
13 | import bb.server.xmlrpc | 13 | import bb.server.xmlrpc |
14 | import prserv | 14 | import prserv |
15 | import prserv.db | 15 | import prserv.db |
16 | import errno | ||
16 | 17 | ||
17 | logger = logging.getLogger("BitBake.PRserv") | 18 | logger = logging.getLogger("BitBake.PRserv") |
18 | 19 | ||
@@ -280,8 +281,18 @@ def stop_daemon(host, port): | |||
280 | if pid: | 281 | if pid: |
281 | if os.path.exists(pidfile): | 282 | if os.path.exists(pidfile): |
282 | os.remove(pidfile) | 283 | os.remove(pidfile) |
283 | os.kill(pid,signal.SIGTERM) | 284 | |
284 | time.sleep(0.1) | 285 | wait_timeout = 0 |
286 | while is_running(pid) and wait_timeout < 10: | ||
287 | print("Waiting for pr-server to exit.") | ||
288 | time.sleep(0.5) | ||
289 | wait_timeout += 1 | ||
290 | |||
291 | if is_running(pid): | ||
292 | print("Sending SIGTERM to pr-server.") | ||
293 | os.kill(pid,signal.SIGTERM) | ||
294 | time.sleep(0.1) | ||
295 | |||
285 | except OSError as e: | 296 | except OSError as e: |
286 | err = str(e) | 297 | err = str(e) |
287 | if err.find("No such process") <= 0: | 298 | if err.find("No such process") <= 0: |
@@ -289,6 +300,14 @@ def stop_daemon(host, port): | |||
289 | 300 | ||
290 | return 0 | 301 | return 0 |
291 | 302 | ||
303 | def is_running(pid): | ||
304 | try: | ||
305 | os.kill(pid, 0) | ||
306 | except OSError as err: | ||
307 | if err.errno == errno.ESRCH: | ||
308 | return False | ||
309 | return True | ||
310 | |||
292 | def is_local_special(host, port): | 311 | def is_local_special(host, port): |
293 | if host.strip().upper() == 'localhost'.upper() and (not port): | 312 | if host.strip().upper() == 'localhost'.upper() and (not port): |
294 | return True | 313 | return True |