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:
HttpRetryOptions exposes intervals, maximum attempts, backoff, retry timeout, and status-code selection.
DurableHttpRequest serializes those options under retryOptions for the HTTP activity.
DurableHttp.callHttp(ctx, request) delegates with null TaskOptions. The implementation then calls ctx.callActivity without a retry policy; it does not derive one from request.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
DurableHttpRequest with HttpRetryOptions specifying three attempts and HTTP 503 as retryable.
- Call
ctx.callHttp(request) without separate TaskOptions.
- 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
Related
HttpRetryOptionsis exposed onDurableHttpRequest, butDurableHttp.callHttpdoes not use that configuration to schedule retries unless the caller separately suppliesTaskOptions. 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
mainatcfdfbf505ed0c4b1b5e9d39a55504650f1dd09e8: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().Consequently, the code path for setting only the request's
HttpRetryOptionsdoes not schedule the configured retry attempts. Supplying a separateTaskOptions/RetryPolicycan 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
DurableHttpRequestwithHttpRetryOptionsspecifying three attempts and HTTP 503 as retryable.ctx.callHttp(request)without separateTaskOptions.Acceptance Criteria
HttpRetryOptionsto durable retry scheduling when no explicit scheduling override is supplied.TaskOptionsand request-level HTTP retry options are both supplied.TaskOptionsinteraction.Related