History

Merge pull request #1140 from sxjeru/main

fix(auth): handle quota cooldown in retry logic for transient errors

Chén Mù committed 9 months ago

Commit 1d6e2e72 parents 15ae83a 30a59161 file · +11 −3Browse files

Unified · Split

sdk/cliproxy/auth/conductor.go+11−3
@@ -1416,8 +1416,12 @@ func (m *Manager) MarkResult(ctx context.Context, result Result) { · 1415 unmodified lines
1416 shouldSuspendModel = true1416 shouldSuspendModel = true
1417 setModelQuota = true1417 setModelQuota = true
1418 case 408, 500, 502, 503, 504:1418 case 408, 500, 502, 503, 504:
1419 next := now.Add(1 * time.Minute)1419 if quotaCooldownDisabled.Load() {
1420 state.NextRetryAfter = next1420 state.NextRetryAfter = time.Time{}
1421 } else {
1422 next := now.Add(1 * time.Minute)
1423 state.NextRetryAfter = next
1424 }
1421 default:1425 default:
1422 state.NextRetryAfter = time.Time{}1426 state.NextRetryAfter = time.Time{}
1423 }1427 }
@@ -1668,7 +1672,11 @@ func applyAuthFailureState(auth *Auth, resultErr *Error, retryAfter *time.Durati · 244 unmodified lines
1668 auth.NextRetryAfter = next1672 auth.NextRetryAfter = next
1669 case 408, 500, 502, 503, 504:1673 case 408, 500, 502, 503, 504:
1670 auth.StatusMessage = "transient upstream error"1674 auth.StatusMessage = "transient upstream error"
1671 auth.NextRetryAfter = now.Add(1 * time.Minute)1675 if quotaCooldownDisabled.Load() {
1676 auth.NextRetryAfter = time.Time{}
1677 } else {
1678 auth.NextRetryAfter = now.Add(1 * time.Minute)
1679 }
1672 default:1680 default:
1673 if auth.StatusMessage == "" {1681 if auth.StatusMessage == "" {
1674 auth.StatusMessage = "request failed"1682 auth.StatusMessage = "request failed"