Skip to content

fix(router): don't re-select the same failed deployment within a stage - #105

Merged
Patel230 merged 1 commit into
mainfrom
fix/deployment-retry-no-repeat
Aug 3, 2026
Merged

fix(router): don't re-select the same failed deployment within a stage#105
Patel230 merged 1 commit into
mainfrom
fix/deployment-retry-no-repeat

Conversation

@Patel230

@Patel230 Patel230 commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Within a routing stage, the retry loop re-computed the weighted deployment
selection from the same candidate list each attempt, so the just-failed
endpoint could be re-selected up to stage.Retries times before the circuit
breaker tripped and the stage advanced. That burned latency and API quota on
known-dead deployments when healthy alternatives were available.

selectDeploymentChoice now takes the just-failed deployment ID and excludes
it from the weighted pool when alternatives remain (single-deployment stages
still retry the one option to detect failure / trip the breaker and advance,
preserving the half-open semantics existing tests rely on). Both Chat and
StreamChat track a stage-scoped recentlyFailed id and exclude it on each
attempt.

Adds TestDeploymentRouterRetriesPreferDifferentEndpoint: a two-deployment
stage (anthropic-direct fails 503, anthropic-vertex healthy, Retries:3) ->
direct is tried at most once, vertex is reached and returns success.

All router/..., retry/..., fallback/... tests pass; gofumpt + golangci-lint clean.

Within a routing stage, selectDeploymentChoice now takes the just-failed
deployment ID and excludes it from weighted selection when alternatives
remain. Previously the retry loop could re-select the same dead endpoint up
to stage.Retries times before the circuit breaker tripped and the stage
advanced, burning latency and API quota. The Chat and StreamChat paths now
track a stage-scoped recentlyFailed id and re-evaluate selection each
attempt; a single-deployment stage still retries the one option to trip its
breaker and move on. Adds TestDeploymentRouterRetriesPreferDifferentEndpoint.
@Patel230
Patel230 merged commit ed62022 into main Aug 3, 2026
16 checks passed
@Patel230
Patel230 deleted the fix/deployment-retry-no-repeat branch August 3, 2026 07:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant