Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions durabletask/internal/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,12 @@ def new_sub_orchestration_failed_event(event_id: int, ex: Exception) -> pb.Histo
)


def new_failure_details(ex: Exception) -> pb.TaskFailureDetails:
def new_failure_details(ex: BaseException) -> pb.TaskFailureDetails:
return pb.TaskFailureDetails(
errorType=type(ex).__name__,
errorMessage=str(ex),
stackTrace=wrappers_pb2.StringValue(value=''.join(traceback.format_tb(ex.__traceback__)))
stackTrace=wrappers_pb2.StringValue(value=''.join(traceback.format_tb(ex.__traceback__))),
innerFailure=new_failure_details(ex.__cause__) if ex.__cause__ else None
)


Expand Down
4 changes: 3 additions & 1 deletion durabletask/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,10 @@ def stack_trace(self) -> Optional[str]:
class TaskFailedError(Exception):
"""Exception type for all orchestration task failures."""

def __init__(self, message: str, details: pb.TaskFailureDetails):
def __init__(self, message: str, details: Union[pb.TaskFailureDetails, Exception]):
super().__init__(message)
if isinstance(details, Exception):
details = pbh.new_failure_details(details)
self._details = FailureDetails(
details.errorMessage,
details.errorType,
Expand Down
Loading