Skip to content

Commit 8334a74

Browse files
committed
Recursion prevention
1 parent 85f8c59 commit 8334a74

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

durabletask/internal/helpers.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,18 @@ def new_sub_orchestration_failed_event(event_id: int, ex: Exception) -> pb.Histo
116116
)
117117

118118

119-
def new_failure_details(ex: BaseException) -> pb.TaskFailureDetails:
119+
def new_failure_details(ex: BaseException, _visited: Optional[set[int]] = None) -> pb.TaskFailureDetails:
120+
if _visited is None:
121+
_visited = set()
122+
_visited.add(id(ex))
123+
inner: Optional[BaseException] = ex.__cause__ or ex.__context__
124+
if len(_visited) > 10 or (inner and id(inner) in _visited):
125+
inner = None
120126
return pb.TaskFailureDetails(
121127
errorType=type(ex).__name__,
122128
errorMessage=str(ex),
123129
stackTrace=wrappers_pb2.StringValue(value=''.join(traceback.format_tb(ex.__traceback__))),
124-
innerFailure=new_failure_details(ex.__cause__) if ex.__cause__ else None
130+
innerFailure=new_failure_details(inner, _visited) if inner else None
125131
)
126132

127133

0 commit comments

Comments
 (0)