Azure / Azure/azure-functions-durable-python

Activities that fail with complex exceptions do not preserve inner exceptions

Open
#561 1 comment 0 reactions 0 assignees View on GitHub
bug fixed-in-v2 P2
Dominant language
Python
Stars
157
Forks
70
Avg merge
2d 10h
Merged PRs (30d)
2

Description

🐛 **Describe the bug**
> When an activity fails with a complex exception (exception derived from inner exception), the inner exception is not preserved to the logs

🤔 **Expected behavior**
> Inner exceptions should be logged as well as outer

☕ **Steps to reproduce**
Function code:
```python

@bp.activity_trigger(input_name="instance2")
def raise_complex_exception(instance2: str) -> str:
global attempt_count
if instance2 not in attempt_count:
attempt_count[instance2] = 1
raise InvalidOperationException(f"This activity failed") from OverflowException(
"More information about the failure")
return "This activity succeeded"

```
Output:
```
[2025-07-10T22:27:53.159Z] Executed 'Functions.raise_complex_exception' (Failed, Id=be9eec7c-214e-4c34-9570-4d123863f196, Duration=35ms)
[2025-07-10T22:27:53.160Z] System.Private.CoreLib: Exception while executing function: Functions.raise_complex_exception. System.Private.CoreLib: Result: Failure
Exception: InvalidOperationException: This activity failed
Stack: File "C:\Program Files\Microsoft\Azure Functions Core Tools\workers\python\3.11/WINDOWS/X64\azure_functions_worker\dispatcher.py", line 671, in _handle__invocation_request
call_result = await self._loop.run_in_executor(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
```

⚡**If deployed to Azure**
N/A

Contributor guide

Open the contributing guide

Research direction

Start with the Python worker path shown in the traceback, especially azure_functions_worker/dispatcher.py around _handle__invocation_request. Reproduce the activity failure using the provided exception chain and inspect how the failure is serialized and logged. Done means the logs include both the outer InvalidOperationException and its OverflowException cause.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, observability
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.