aboutsummaryrefslogtreecommitdiffstats
path: root/lib/prserv
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2014-03-28 12:10:54 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-03-28 13:44:37 +0000
commit81f41a806aeddcc38992163557672e296bcbc967 (patch)
treef6df099e2008e9aa7d6a8ca2542cbdc8537179db /lib/prserv
parent1249543c4dbf3edeac033d888497864cfc807a4e (diff)
downloadbitbake-contrib-81f41a806aeddcc38992163557672e296bcbc967.tar.gz
prserv: Fix exit race issues
We shouldn't immediately remove the pid file when stopping the server, if we do, this causes a traceback within the server itself which can then hang. Fix this by removing the stale pid file as the last thing we do. Also: * don't printing a new "waiting" line every 0.5 seconds. * make the loop more granular since the user can 'feel' the 0.5 seconds [YOCTO #5984] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/prserv')
-rw-r--r--lib/prserv/serv.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/prserv/serv.py b/lib/prserv/serv.py
index e4c1c2a6a..1e170cea0 100644
--- a/lib/prserv/serv.py
+++ b/lib/prserv/serv.py
@@ -275,17 +275,13 @@ def stop_daemon(host, port):
PRServerConnection(host, port).terminate()
except:
logger.critical("Stop PRService %s:%d failed" % (host,port))
- time.sleep(0.5)
try:
if pid:
- if os.path.exists(pidfile):
- os.remove(pidfile)
-
wait_timeout = 0
- while is_running(pid) and wait_timeout < 10:
- print("Waiting for pr-server to exit.")
- time.sleep(0.5)
+ print("Waiting for pr-server to exit.")
+ while is_running(pid) and wait_timeout < 50:
+ time.sleep(0.1)
wait_timeout += 1
if is_running(pid):
@@ -293,6 +289,9 @@ def stop_daemon(host, port):
os.kill(pid,signal.SIGTERM)
time.sleep(0.1)
+ if os.path.exists(pidfile):
+ os.remove(pidfile)
+
except OSError as e:
err = str(e)
if err.find("No such process") <= 0: