From 6c5072cfe0dae0069bb2f8d9ba8e994b00a64b5f Mon Sep 17 00:00:00 2001 From: jesopo Date: Wed, 18 Sep 2019 19:27:02 +0100 Subject: [PATCH] only raise in commands.process() when a raise was wrapped (#1370) --- src/commands.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/commands.py b/src/commands.py index f06ab92de..81fa67529 100644 --- a/src/commands.py +++ b/src/commands.py @@ -123,9 +123,9 @@ def process(f, *args, **kwargs): resource.setrlimit(rsrc, (soft, hard)) try: r = f(*args, **kwargs) - q.put(r) + q.put([False, r]) except Exception as e: - q.put(e) + q.put([True, e]) targetArgs = (f, q,) + args p = callbacks.CommandProcess(target=newf, args=targetArgs, kwargs=kwargs) @@ -136,12 +136,13 @@ def process(f, *args, **kwargs): q.close() raise ProcessTimeoutError("%s aborted due to timeout." % (p.name,)) try: - v = q.get(block=False) + raised, v = q.get(block=False) except minisix.queue.Empty: return None finally: q.close() - if isinstance(v, Exception): + + if raised: raise v else: return v