Merge pull request #1140 from sxjeru/main

fix(auth): handle quota cooldown in retry logic for transient errors
This commit is contained in:
Chén Mù
2026-01-23 19:43:17 +08:00
committed by GitHub

View File

@@ -1416,8 +1416,12 @@ func (m *Manager) MarkResult(ctx context.Context, result Result) {
shouldSuspendModel = true shouldSuspendModel = true
setModelQuota = true setModelQuota = true
case 408, 500, 502, 503, 504: case 408, 500, 502, 503, 504:
if quotaCooldownDisabled.Load() {
state.NextRetryAfter = time.Time{}
} else {
next := now.Add(1 * time.Minute) next := now.Add(1 * time.Minute)
state.NextRetryAfter = next state.NextRetryAfter = next
}
default: default:
state.NextRetryAfter = time.Time{} state.NextRetryAfter = time.Time{}
} }
@@ -1668,7 +1672,11 @@ func applyAuthFailureState(auth *Auth, resultErr *Error, retryAfter *time.Durati
auth.NextRetryAfter = next auth.NextRetryAfter = next
case 408, 500, 502, 503, 504: case 408, 500, 502, 503, 504:
auth.StatusMessage = "transient upstream error" auth.StatusMessage = "transient upstream error"
if quotaCooldownDisabled.Load() {
auth.NextRetryAfter = time.Time{}
} else {
auth.NextRetryAfter = now.Add(1 * time.Minute) auth.NextRetryAfter = now.Add(1 * time.Minute)
}
default: default:
if auth.StatusMessage == "" { if auth.StatusMessage == "" {
auth.StatusMessage = "request failed" auth.StatusMessage = "request failed"