From: Richard Purdie <richard.purdie@linuxfoundation.org>
To: bitbake-devel <bitbake-devel@lists.openembedded.org>
Subject: [PATCH] event: Improve exception handling
Date: Tue, 10 Mar 2015 14:27:48 +0000 [thread overview]
Message-ID: <1425997668.9114.24.camel@linuxfoundation.org> (raw)
Currently, if an exception occurs during an event handler execution,
things can get messy and in many cases the system will loop
indefinitely, particularly if its being triggered through idle handler
code.
This patch changes things so that unhandled exceptions print an error
onto the console/logs, then continue, rather than raising an exception
into "higher" level code which simply can't handle it.
In particular this is more in keeping with the meaning of "Handled"
exceptions. Real world error cases triggering these code paths were much
more stable after these changes than before (which just looped
infinitely printing exceptions).
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py
index fec6a05..62a8f4f 100644
--- a/bitbake/lib/bb/event.py
+++ b/bitbake/lib/bb/event.py
@@ -74,17 +74,17 @@ def execute_handler(name, handler, event, d):
event.data = d
try:
ret = handler(event)
- except (bb.parse.SkipRecipe, bb.BBHandledException):
+ except bb.parse.SkipRecipe:
raise
+ except bb.BBHandledException:
+ pass
except Exception:
etype, value, tb = sys.exc_info()
logger.error("Execution of event handler '%s' failed" % name,
exc_info=(etype, value, tb.tb_next))
- raise
except SystemExit as exc:
if exc.code != 0:
- logger.error("Execution of event handler '%s' failed" % name)
- raise
+ logger.error("Execution of event handler '%s' failed (exit code %s)" % (name, exc.code))
finally:
del event.data
reply other threads:[~2015-03-10 14:28 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1425997668.9114.24.camel@linuxfoundation.org \
--to=richard.purdie@linuxfoundation.org \
--cc=bitbake-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.