summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--heat/engine/service.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/heat/engine/service.py b/heat/engine/service.py
index 2f1d20021..069d6d3ef 100644
--- a/heat/engine/service.py
+++ b/heat/engine/service.py
@@ -116,9 +116,20 @@ class ThreadGroupManager(object):
"""
if stack_id not in self.groups:
self.groups[stack_id] = threadgroup.ThreadGroup()
- return self.groups[stack_id].add_thread(self._start_with_trace,
- self._serialize_profile_info(),
- func, *args, **kwargs)
+
+ def log_exceptions(gt):
+ try:
+ gt.wait()
+ except Exception:
+ LOG.exception(_LE('Unhandled error in asynchronous task'))
+ except BaseException:
+ pass
+
+ th = self.groups[stack_id].add_thread(self._start_with_trace,
+ self._serialize_profile_info(),
+ func, *args, **kwargs)
+ th.link(log_exceptions)
+ return th
def start_with_lock(self, cnxt, stack, engine_id, func, *args, **kwargs):
"""