summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/prserv/serv.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/prserv/serv.py')
-rw-r--r--bitbake/lib/prserv/serv.py23
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:
import bb.server.xmlrpc
import prserv
import prserv.db
+import errno
logger = logging.getLogger("BitBake.PRserv")
@@ -280,8 +281,18 @@ def stop_daemon(host, port):
if pid:
if os.path.exists(pidfile):
os.remove(pidfile)
- os.kill(pid,signal.SIGTERM)
- time.sleep(0.1)
+
+ wait_timeout = 0
+ while is_running(pid) and wait_timeout < 10:
+ print("Waiting for pr-server to exit.")
+ time.sleep(0.5)
+ wait_timeout += 1
+
+ if is_running(pid):
+ print("Sending SIGTERM to pr-server.")
+ os.kill(pid,signal.SIGTERM)
+ time.sleep(0.1)
+
except OSError as e:
err = str(e)
if err.find("No such process") <= 0:
@@ -289,6 +300,14 @@ def stop_daemon(host, port):
return 0
+def is_running(pid):
+ try:
+ os.kill(pid, 0)
+ except OSError as err:
+ if err.errno == errno.ESRCH:
+ return False
+ return True
+
def is_local_special(host, port):
if host.strip().upper() == 'localhost'.upper() and (not port):
return True