Steve Coffey
31ffe2bc9a
Fix retry classification for throttling and quota errors ( #45602 )
...
## Why
`slow_down` errors were treated as terminal server overloads, while exhausted credit balances and spend limits fell through to retryable stream errors.
## What changed
- Classify `slow_down` as a retryable rate limit in HTTP 503 responses and SSE failures, preserving the server message and parsing retry delays from SSE error messages.
- Map `credit_balance_exhausted`, `organization_spend_limit_exceeded`, and `project_spend_limit_exceeded` SSE errors to quota exhaustion so they terminate without retries.
## Testing
Extend tests to cover HTTP error classification and retryability, `slow_down` stream retry exhaustion and message-provided delays, and a single `UsageLimitExceeded` error with no retries for each quota error code.
GitOrigin-RevId: 7985eba71ba4a6fe897a45957e448fadd42f3963
2026-09-15 04:20:38 +00:00
..
2026-09-15 02:35:59 +00:00
2026-08-24 22:40:35 +00:00
2026-09-14 22:52:40 +00:00
2026-09-15 02:33:27 +00:00
2026-09-14 22:31:32 +00:00
2026-09-15 02:35:59 +00:00
2026-09-14 23:25:09 +00:00
2026-09-03 06:02:25 +00:00
2026-09-10 13:02:57 +00:00
2026-08-20 08:10:08 +00:00
2026-09-11 20:10:02 +00:00
2026-08-31 13:44:12 +00:00
2026-09-15 00:29:13 +00:00
2026-09-09 03:17:48 +00:00
2026-09-14 22:31:32 +00:00
2026-09-07 16:55:06 +00:00
2026-08-17 22:37:14 +00:00
2026-09-15 02:35:59 +00:00
2026-09-10 21:41:39 +00:00
2026-09-03 01:46:37 +00:00
2026-08-28 19:44:50 +00:00
2026-09-11 17:00:07 +00:00
2026-09-11 17:00:07 +00:00
2026-09-11 17:00:07 +00:00
2026-09-14 09:29:51 +00:00
2026-09-15 04:20:38 +00:00
2026-08-18 23:47:00 +00:00
2026-09-14 19:12:59 +00:00
2026-09-14 16:30:00 +00:00
2026-09-05 01:25:06 +00:00
2026-09-14 21:06:36 +00:00
2026-08-31 21:27:51 +00:00
2026-09-14 15:06:28 +00:00
2026-09-12 18:16:17 +00:00
2026-09-15 04:20:38 +00:00
2026-09-11 01:57:54 +00:00
2026-09-14 16:30:00 +00:00
2026-09-05 12:17:32 +00:00
2026-09-14 15:30:22 +00:00
2026-09-14 23:52:16 +00:00
2026-09-14 22:40:20 +00:00
2026-08-17 04:37:50 +00:00
2026-09-14 23:34:59 +00:00
2026-09-10 18:24:13 +00:00
2026-09-12 22:28:41 +00:00
2026-09-10 18:10:26 +00:00
2026-08-27 20:44:47 +00:00
2026-09-06 20:52:29 +00:00
2026-09-14 23:25:09 +00:00
2026-09-09 23:23:59 +00:00
2026-09-10 00:26:30 +00:00
2026-09-14 19:30:37 +00:00
2026-09-11 21:59:24 +00:00
2026-09-14 22:40:20 +00:00
2026-09-14 19:11:29 +00:00
2026-09-09 20:32:57 +00:00
2026-09-10 03:18:28 +00:00
2026-09-10 21:41:39 +00:00
2026-09-12 00:22:04 +00:00
2026-09-14 22:40:20 +00:00
2026-09-14 22:40:20 +00:00
2026-09-09 15:48:39 +00:00
2026-09-01 17:17:45 +00:00
2026-09-10 21:51:34 +00:00
2026-08-25 15:50:19 +00:00
2026-09-14 23:25:09 +00:00
2026-09-11 03:16:01 +00:00
2026-08-26 17:45:42 +00:00
2026-08-21 16:45:05 +00:00
2026-09-10 20:50:10 +00:00
2026-09-14 16:37:47 +00:00
2026-08-28 01:14:02 +00:00
2026-09-14 23:55:04 +00:00
2026-09-09 06:04:59 +00:00
2026-09-09 04:00:10 +00:00
2026-09-05 05:21:42 +00:00
2026-09-15 02:33:27 +00:00
2026-09-02 18:34:27 +00:00
2026-09-14 21:06:36 +00:00
2026-09-15 02:33:27 +00:00
2026-09-14 23:25:09 +00:00
2026-09-14 23:52:39 +00:00
2026-09-02 18:42:06 +00:00
2026-09-08 00:13:28 +00:00
2026-09-14 23:25:09 +00:00
2026-09-11 22:09:02 +00:00
2026-09-03 20:01:07 +00:00
2026-09-15 00:42:31 +00:00
2026-09-15 00:42:31 +00:00
2026-09-13 18:53:06 +00:00
2026-09-08 21:19:02 +00:00
2026-09-15 02:33:27 +00:00
2026-09-14 18:56:43 +00:00
2026-09-11 06:45:09 +00:00