[gnome-continuous-yocto/gnomeostree-3.28-rocko: 7508/8267] lib/oe/utils: Handle exceptions in multiprocess_exec
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 7508/8267] lib/oe/utils: Handle exceptions in multiprocess_exec
- Date: Sun, 17 Dec 2017 06:20:48 +0000 (UTC)
commit 627d9a71dfedd30da2beb5e967f38b2f908f98d5
Author: Richard Purdie <richard purdie linuxfoundation org>
Date: Fri Sep 1 14:24:31 2017 +0100
lib/oe/utils: Handle exceptions in multiprocess_exec
Currently exceptions that happen in pool commands are ignored. Any errors
would be printed on the console but everything else is silent.
Switch to use pool.map_async which allows for an error_callback which
we can use to detect exceptions and make sure these errors are handled.
(From OE-Core rev: 7f2f9b3ff011b340b5d23bb7c47b12c357dc9f02)
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
meta/lib/oe/utils.py | 21 +++++++++++++--------
1 files changed, 13 insertions(+), 8 deletions(-)
---
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index 822d0cd..643ab78 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -224,25 +224,30 @@ def multiprocess_exec(commands, function):
def init_worker():
signal.signal(signal.SIGINT, signal.SIG_IGN)
+ fails = []
+
+ def failures(res):
+ fails.append(res)
+
nproc = min(multiprocessing.cpu_count(), len(commands))
pool = bb.utils.multiprocessingpool(nproc, init_worker)
- imap = pool.imap(function, commands)
try:
- res = list(imap)
+ mapresult = pool.map_async(function, commands, error_callback=failures)
+
pool.close()
pool.join()
- results = []
- for result in res:
- if result is not None:
- results.append(result)
- return results
-
+ results = mapresult.get()
except KeyboardInterrupt:
pool.terminate()
pool.join()
raise
+ if fails:
+ raise fails[0]
+
+ return results
+
def squashspaces(string):
import re
return re.sub("\s+", " ", string).strip()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]