Azure / Azure/azure-functions-durable-python

DTS - Failed activities return a broken error message

未关闭
#562 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
bug fixed-in-v2 P2
主要语言
Python
星标
157
派生
70
平均合并
2 天 10 小时
30 天内合并 PR
2

描述

🐛 **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

贡献指南

打开贡献指南

调研方向

Start with the DTS path used by context.call_activity and compare how failed activity exceptions are propagated with the Azure Storage and MSSQL paths described in the issue. Reproduce the CatchActivityException orchestration and verify that the caught exception includes the activity failure message instead of `None`.

由索引模型根据 Issue 内容生成。

评估

技术栈
azure, python
领域
backend, distributed-systems
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。