Azure / Azure/azure-functions-durable-python

DTS - purge_instance_history_by throws "Exception: The operation failed with an unexpected status code 400"

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

描述

🐛 **Describe the bug**
If you call purge_instance_history_by when using the DTS backend, you get the following error: Exception: The operation failed with an unexpected status code 400

🤔 **Expected behavior**
purge_instance_history_by should successfully purge instance history based on the input params

☕ **Steps to reproduce**
Function code:

```python
@bp.route(route="PurgeOrchestrationHistory", methods=["GET", "POST"])
@bp.durable_client_input(client_name="client")
async def purge_history(req: func.HttpRequest, client: df.DurableOrchestrationClient):
logging.info("Starting purge all instance history")
try:
# Parse optional query parameters for purgeStartTime and purgeEndTime
purge_start_time: Optional[datetime] = None
purge_end_time: Optional[datetime] = None
if req.params.get("purgeStartTime"):
purge_start_time = datetime.fromisoformat(req.params["purgeStartTime"])
if req.params.get("purgeEndTime"):
purge_end_time = datetime.fromisoformat(req.params["purgeEndTime"])

# Purge orchestration history
result = await client.purge_instance_history_by(
created_time_from=purge_start_time,
created_time_to=purge_end_time,
runtime_status=[
df.OrchestrationRuntimeStatus.Completed,
df.OrchestrationRuntimeStatus.Failed,
df.OrchestrationRuntimeStatus.Terminated,
],
)
logging.info("Finished purge all instance history")
return func.HttpResponse(
f"Purged {result.instances_deleted} records",
status_code=200,
mimetype="text/plain"
)
except Exception as ex:
logging.error("Failed to purge all instance history", exc_info=True)
return func.HttpResponse(
f"Failed to purge all instance history: {str(ex)}",
status_code=500,
mimetype="text/plain"
)
```

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

贡献指南

打开贡献指南

调研方向

首先定位 purge_instance_history_by 入口点及其发出的 DTS 后端请求,然后使用 issue 中所示的运行时状态和可选时间范围重现该调用。跟踪 400 响应,并验证操作成功且报告了预期的已删除实例数量。

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

评估

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

把新 issue 发到你的邮箱

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