[OE-core] [PATCH 2/2] knotty: shut down more cleanly
Christopher Larson
kergoth at gmail.com
Wed Feb 8 04:13:45 UTC 2012
From: Christopher Larson <chris_larson at mentor.com>
This ensures that when we are shutting down, we drain the queue of events from
the server. This ensures that the server never gets hung up on the join of the
feeder thread associated with the event queue, thereby avoiding a bitbake hang
issue.
Also, since the third keyboard interrupt now behaves the same as the second,
removed that message.
Signed-off-by: Christopher Larson <chris_larson at mentor.com>
---
lib/bb/ui/knotty.py | 15 +++++++--------
1 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/lib/bb/ui/knotty.py b/lib/bb/ui/knotty.py
index e1d42f7..22370ef 100644
--- a/lib/bb/ui/knotty.py
+++ b/lib/bb/ui/knotty.py
@@ -118,6 +118,8 @@ def main(server, eventHandler):
try:
event = eventHandler.waitEvent(0.25)
if event is None:
+ if shutdown > 1:
+ break
continue
helper.eventHandler(event)
if isinstance(event, bb.runqueue.runQueueExitWait):
@@ -199,18 +201,18 @@ def main(server, eventHandler):
print("Loaded %d entries from dependency cache." % event.num_entries)
continue
- if isinstance(event, bb.command.CommandCompleted):
- break
if isinstance(event, bb.command.CommandFailed):
return_value = event.exitcode
logger.error("Command execution failed: %s", event.error)
- break
+ shutdown = 2
+ continue
if isinstance(event, bb.command.CommandExit):
if not return_value:
return_value = event.exitcode
continue
- if isinstance(event, bb.cooker.CookerExit):
- break
+ if isinstance(event, (bb.command.CommandCompleted, bb.cooker.CookerExit)):
+ shutdown = 2
+ continue
if isinstance(event, bb.event.MultipleProviders):
logger.info("multiple providers are available for %s%s (%s)", event._is_runtime and "runtime " or "",
event._item,
@@ -269,9 +271,6 @@ def main(server, eventHandler):
if ioerror.args[0] == 4:
pass
except KeyboardInterrupt:
- if shutdown == 2:
- print("\nThird Keyboard Interrupt, exit.\n")
- break
if shutdown == 1:
print("\nSecond Keyboard Interrupt, stopping...\n")
server.runCommand(["stateStop"])
--
1.7.7
More information about the Openembedded-core
mailing list