`multiprocessing.pool.Pool#map_async` no longer has the exception
context, therefore calling `logging.exception` did not print the exception anymore.
Now, let's call `fail` while we have the exception context.
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
self._on_complete_ = None
self._finalize(result)
except Exception as e:
- self.fail(e)
+ try:
+ self.fail(e)
+ except Exception:
+ logger.exception(f'failed to fail AsyncCompletion: >{repr(self)}<')
+ if 'UNITTEST' in os.environ:
+ assert False
def error_callback(e):
- self.fail(e)
+ pass
def run(value):
def do_work(*args, **kwargs):
self.progress_reference.progress += 1.0 / len(value)
return res
except Exception as e:
- if six.PY3:
- raise
- else:
- # Py2 only: _worker_pool doesn't call error_callback
- self.fail(e)
+ self.fail(e)
+ raise
assert CephadmOrchestrator.instance
if self.many:
assert self._state in (self.INITIALIZED, self.RUNNING)
logger.exception('_Promise failed')
self._exception = e
- self._value = 'exception'
+ self._value = f'_exception: {e}'
if self._next_promise:
self._next_promise.fail(e)
self._state = self.FINISHED