bitbake: 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] (Bitbake rev: 81f41a806aeddcc38992163557672e296bcbc967) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
ef28fcd7fe
commit
6448634205
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue