mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-18 12:52:25 +03:00
* feat(sse): retry transient 5xx backend errors with jitter (global-fallback call site) (#12695) Per Diego's review feedback on the original PR (which was closed for base drift + over-broad scope): - Helper in tests/unit/ (not open-sse/__tests__) - 7 node:test cases - Drop 429 from retryable set (keep 502/503/504) - 429 must respect the RateLimit-Reset header and be surfaced, not silently retried - Touch ONLY the global-fallback call site in chat.ts - the combo-target loop has its own retry semantics already The wrap uses decorrelated full-jitter exponential backoff (per AWS retry guidance), abort-aware (client disconnect cancels immediately), and respects the AbortSignal via a sleep that throws on abort. Re-cherry-pick: dropped all unrelated drift from the original PR (videoBridgeLog plumbing, forcedConnectionId refactor, comboCheckProvider/ghComboGate, getPassthroughProviders, Moonshot quota fetcher, withSelectedConnectionHeader, classifyProviderBreakerResult, reanchorVideoBridgeRedaction, etc.). chat.ts is now +20/-16 — purely the import + the wrap around handleSingleModelChat in the global-fallback block. Diego should now see a clean, focused diff. Fixes #12695 * fix(sse): address kilo-code-bot review on transientBackendRetry helper Per the review comment on the previous commit: - Jitter formula now matches documented AWS decorrelated jitter (temp = min(cap, random(base, prev*3))) instead of an ad-hoc baseMs + rand*prev*2 approximation - AbortSignal is honoured by the default sleep implementation (was previously only honoured by the loop's pre-attempt check) - 'source' option added to TransientRetryOptions so callers can propagate an observability label (e.g. 'global-fallback') through onRetry Adds 3 tests: - default sleep respects AbortSignal without custom sleep - onRetry receives source label - decorrelated jitter is bounded by capMs 10/10 unit tests pass. --------- Co-authored-by: KooshaPari <kooshapari@users.noreply.github.com>