Azure / Azure/azure-functions-durable-python
DTS - purge_instance_history_by throws "Exception: The operation failed with an unexpected status code 400"
- 主要言語
- Python
- スター
- 157
- フォーク
- 70
- 平均マージ
- 2日 10時間
- マージ済み PR(30日)
- 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