.NET client: fix retry budget consumed by a DeadlineExceeded first attempt (R21-O21 / CLI-07) #197

Open
opened 2026-11-06 15:25:06 -05:00 by dohertj2 · 0 comments
Owner

ExecuteSafeUnaryAsync wraps the retry pipeline in CancelAfter(DefaultCallTimeout) while each attempt has the same deadline, so a DeadlineExceeded first attempt consumes the whole budget and retries never run.

Source: archreview/2026-10-21/remediation/00-tracking.md row R21-O21 (cycle-1 CLI-07)

Next step (from the tracker): Make the outer budget MaxAttempts x DefaultCallTimeout (or drop the outer cap); add a wire test with a slow first attempt.

Current-state evidence: the row is still Open/Deferred in the latest (2026-10-21) tracker, and a code check on local main @ 8c0a51d (2026-11-06) found it still present unless noted below.

`ExecuteSafeUnaryAsync` wraps the retry pipeline in `CancelAfter(DefaultCallTimeout)` while each attempt has the same deadline, so a `DeadlineExceeded` first attempt consumes the whole budget and retries never run. Source: `archreview/2026-10-21/remediation/00-tracking.md` row R21-O21 (cycle-1 CLI-07) Next step (from the tracker): Make the outer budget `MaxAttempts x DefaultCallTimeout` (or drop the outer cap); add a wire test with a slow first attempt. Current-state evidence: the row is still `Open`/`Deferred` in the latest (2026-10-21) tracker, and a code check on local `main` @ `8c0a51d` (2026-11-06) found it still present unless noted below.
dohertj2 added the area:client-dotnetpriority:p2type:review-findingmigrated labels 2026-11-06 15:25:06 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/mxaccessgw#197