summaryrefslogtreecommitdiffstats
path: root/bitbake
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-30 10:10:36 +0100
commit6448634205ac1c62fc2ed163498cf65f0f21ca6b (patch)
tree045ce31ea89cb6e7b6de67d6029c46e78c71c557 /bitbake
parentef28fcd7feb13db21572d28549427ee153957097 (diff)
downloadpoky-6448634205ac1c62fc2ed163498cf65f0f21ca6b.tar.gz
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>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/prserv/serv.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py
index e4c1c2a6aa..1e170cea0a 100644
--- a/bitbake/lib/prserv/serv.py
+++ b/bitbake/lib/prserv/serv.py
@@ -275,17 +275,13 @@ def stop_daemon(host, port):
275 PRServerConnection(host, port).terminate() 275 PRServerConnection(host, port).terminate()
276 except: 276 except:
277 logger.critical("Stop PRService %s:%d failed" % (host,port)) 277 logger.critical("Stop PRService %s:%d failed" % (host,port))
278 time.sleep(0.5)
279 278
280 try: 279 try:
281 if pid: 280 if pid:
282 if os.path.exists(pidfile):
283 os.remove(pidfile)
284
285 wait_timeout = 0 281 wait_timeout = 0
286 while is_running(pid) and wait_timeout < 10: 282 print("Waiting for pr-server to exit.")
287 print("Waiting for pr-server to exit.") 283 while is_running(pid) and wait_timeout < 50:
288 time.sleep(0.5) 284 time.sleep(0.1)
289 wait_timeout += 1 285 wait_timeout += 1
290 286
291 if is_running(pid): 287 if is_running(pid):
@@ -293,6 +289,9 @@ def stop_daemon(host, port):
293 os.kill(pid,signal.SIGTERM) 289 os.kill(pid,signal.SIGTERM)
294 time.sleep(0.1) 290 time.sleep(0.1)
295 291
292 if os.path.exists(pidfile):
293 os.remove(pidfile)
294
296 except OSError as e: 295 except OSError as e:
297 err = str(e) 296 err = str(e)
298 if err.find("No such process") <= 0: 297 if err.find("No such process") <= 0: