diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-03-28 12:10:54 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-03-28 13:44:37 +0000 |
commit | 81f41a806aeddcc38992163557672e296bcbc967 (patch) | |
tree | f6df099e2008e9aa7d6a8ca2542cbdc8537179db /lib/prserv | |
parent | 1249543c4dbf3edeac033d888497864cfc807a4e (diff) | |
download | bitbake-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.py | 13 |
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: |