Azure / Azure/azure-functions-durable-python

DTS - Failed activities return a broken error message

Open
#562 2 comments 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**
In AzureStorage or MSSQL, if an activity function fails, the orchestrator gets back an exception with relevant information about how the activity failed.
In DTS, you get back None

🤔 **Expected behavior**
When an activity function fails, the yield statement from the orchestrator should throw an exception with relevant information about how the activity failed, including the message from the exception thrown by the activity.

☕ **Steps to reproduce**
Orchestrator and activity:
```python

@bp.orchestration_trigger(context_name="context", orchestration="CatchActivityException")
def catch_activity_exception(context: df.DurableOrchestrationContext):
try:
yield context.call_activity('raise_exception', context.instance_id)
except Exception as e:
logging.error(f"Caught exception: {e}")
return f"Caught exception: {e}"

@bp.activity_trigger(input_name="instance")
def raise_exception(instance: str) -> str:
global attempt_count
if instance not in attempt_count:
attempt_count[instance] = 1
raise InvalidOperationException(f"This activity failed")
return "This activity succeeded"
```

The return value for Azure Storage/MSSQL:

```
Caught exception: Activity function 'raise_exception' failed:
```

The return value for DTS:
```
Caught exception: None \n None
```

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

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.