Apply DurableHttpRequest.HttpRetryOptions when scheduling durable HTTP retries
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- java
調査の方向性
DurableHttp.callHttp から始め、DurableHttpRequest.getHttpRetryOptions が ctx.callActivity にどのように渡されるかを追跡し、その後 HttpRetryOptions と TaskOptions のリトライ動作を調べます。明示的な TaskOptions の優先順位を定義し、ステータスコードによるフィルタリングを維持したうえで、リクエストのみのリトライ、成功、上限到達、除外、トランスポート障害、相互作用のケースをカバーするテストを追加します。動作が確定したら、API ドキュメントまたは例を更新します。
索引モデルが issue の本文から書いたものです。
説明
HttpRetryOptions is exposed on DurableHttpRequest, but DurableHttp.callHttp does not use that configuration to schedule retries unless the caller separately supplies TaskOptions. This is the Java retry-scheduling follow-up to Azure/azure-functions-durable-extension#1984, not a request to add a second HTTP API or retry-options type.
Current behavior
Checked v1.9.0 and main at cfdfbf505ed0c4b1b5e9d39a55504650f1dd09e8:
HttpRetryOptionsexposes intervals, maximum attempts, backoff, retry timeout, and status-code selection.DurableHttpRequestserializes those options underretryOptionsfor the HTTP activity.DurableHttp.callHttp(ctx, request)delegates with nullTaskOptions. The implementation then callsctx.callActivitywithout a retry policy; it does not derive one fromrequest.getHttpRetryOptions().- The extension's HTTP activity uses the configured status codes to turn matching responses into failures, but durable retry scheduling is separate from that failure classification.
Consequently, the code path for setting only the request's HttpRetryOptions does not schedule the configured retry attempts. Supplying a separate TaskOptions/RetryPolicy can schedule retries, but duplicates configuration and leaves the request-level attempt/backoff settings unapplied.
This finding is based on source-path inspection; an end-to-end failure/retry reproduction has not been executed.
Reproduction scenario
- Configure a
DurableHttpRequestwithHttpRetryOptionsspecifying three attempts and HTTP 503 as retryable. - Call
ctx.callHttp(request)without separateTaskOptions. - Use an endpoint that returns 503 for the first attempt and 200 for the next attempt.
- Verify whether the orchestration schedules the second request using the request's retry policy rather than failing after the first HTTP activity.
Acceptance Criteria
- Apply the request's
HttpRetryOptionsto durable retry scheduling when no explicit scheduling override is supplied. - Honor attempt limits, first/max intervals, backoff, and retry timeout, while retaining HTTP-status-code filtering.
- Define and document precedence when explicit
TaskOptionsand request-level HTTP retry options are both supplied. - Preserve existing behavior when retry options are omitted.
- Add coverage for request-only retry configuration, retry-then-success, exhaustion, excluded status codes, transport failures, and explicit
TaskOptionsinteraction. - Update API documentation/examples so callers do not need two inconsistent policies for one HTTP request.
Related
- Original cross-language tracker: Azure/azure-functions-durable-extension#1984.
- Existing broad HTTP support tracker: microsoft/durabletask-java#39.
- HTTP API implementation: microsoft/durabletask-java#271.
- 主要言語
- Java
- スター
- 29
- フォーク
- 18
- 平均マージ
- 1日 10時間
- マージ済み PR(30日)
- 2
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/durabletask-java のほかの issue
-
Needs: Triage :mag:
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
microsoft/durabletask-java#290 · コメント 2 件 ·
-
Needs: Triage :mag:
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
microsoft/durabletask-java#285 ·
-
Needs: Triage :mag:
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
microsoft/durabletask-java#276 ·
-
Enhancement
microsoft/durabletask-java#274 · リアクション 1 件 · 担当者 2 名 ·
-
Needs: Triage :mag:
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
microsoft/durabletask-java#270 ·
microsoft/durabletask-java の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
bug needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 94/100
objectionary/hone-maven-plugin#1061 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
spring-projects/spring-modulith#1895 ·