diff options
| -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 |
