Fix exception serialisation error

This commit is contained in:
Andras Schmelczer 2022-07-16 12:27:05 +02:00
parent f1a1de5469
commit 8cd3449cff
No known key found for this signature in database
GPG key ID: 0EA1BC97D0AB076E
3 changed files with 11 additions and 5 deletions

View file

@ -40,7 +40,9 @@ def manage_communication(
except Exception as e: except Exception as e:
if ignore_exceptions: if ignore_exceptions:
logger.error( logger.error(
f"Exception {e} encountered in input, traceback:\n{traceback.format_exc()}" f"""Exception {e} encountered in input, traceback:\n{
traceback.format_exc()
}"""
) )
else: else:
raise raise
@ -51,10 +53,12 @@ def manage_communication(
if r.exception is not None: if r.exception is not None:
if ignore_exceptions: if ignore_exceptions:
logger.error( logger.error(
f"Exception {r.exception} encountered in worker, traceback:\n{r.worker_traceback}" f"""Exception {
r.exception
} encountered in worker, traceback:\n{r.worker_traceback}"""
) )
else: else:
raise WorkerException from r.exception raise WorkerException(r.exception)
if unordered: if unordered:

View file

@ -4,5 +4,5 @@ from typing import Any, NamedTuple, Optional
class MapResult(NamedTuple): class MapResult(NamedTuple):
order: int order: int
value: Any value: Any
exception: Optional[Exception] = None exception: Optional[str] = None
worker_traceback: Optional[str] = None worker_traceback: Optional[str] = None

View file

@ -57,7 +57,9 @@ def mapper_function(
last_chunk.append(MapResult(i, func(value))) last_chunk.append(MapResult(i, func(value)))
except Exception as e: except Exception as e:
last_chunk.append( last_chunk.append(
MapResult(i, None, e, traceback.format_exc()) # `e` has to be stringified in order to avoid any
# surprising serialization error when returning it
MapResult(i, None, str(e), traceback.format_exc())
) )
except queue.Empty: except queue.Empty:
pass pass