feeeei
f4f8ff04db
fix(gateway): 客户端断开统一标记 499,不再被记成 502/200 上游错误
客户端在响应提交前断开时,只有排队/换号阶段和 OpenAI 的兜底写入会标 499。
Claude 非流式与 Gemini 的 Chat Completions / Messages / Responses 兼容入口
在等待上游时断开,由 GatewayHandler.ensureForwardErrorResponse 补写 502;
Gemini 原生入口什么都不写,落成 200 并被 ops 记成一条 provider 的
"Recovered upstream error";Antigravity 回写 502。这些行都按上游失败计入
SLA 与上游错误数。
- GatewayHandler.ensureForwardErrorResponse 补客户端断开检查,与 OpenAI 版一致
- GatewayHandler 的 Messages / ChatCompletions / Responses 与 Gemini 原生入口:
首次选号失败时先判断客户端断开;ChatCompletions / Responses 循环开头改用
failoverClientGone,不再直接 return 落成 200
- Gemini 原生入口:forward 失败时补 499 标记;并发槽错误改走
concurrencyErrorResponse 统一映射(断开 499、排队满/超时 429、其余 503)
- Antigravity 上游响应前断开回写 499;googleapi 与 Antigravity 的 Google 错误
格式把 499 映射为 CANCELLED
- OpenAI alpha search 非 failover 错误分支补断开检查
- Claude / Gemini / OpenAI 传输层错误:请求 context 已取消时不记 ops 上游事件
- ops:IgnoreContextCanceled 开启时跳过没有上游错误上下文的 499;带上游错误的
499(上游失败后客户端没等到换号结果就离开)仍按上游失败落库
计费不变:Gemini 流式中途断开的用量处理不在本次范围。新增 handler/service
单测覆盖各入口的断开场景与 ops 过滤规则。
2026-09-26 17:13:10 +08:00
..
2026-09-23 15:26:35 +08:00
2026-09-23 15:26:44 +08:00
2026-08-09 22:42:51 +08:00
2026-08-09 22:42:51 +08:00
2026-08-06 20:34:37 +08:00
2026-09-05 16:05:17 +08:00
2026-08-04 20:57:15 +08:00
2026-09-23 01:24:59 +08:00
2026-08-04 20:57:15 +08:00
2026-08-04 15:09:29 +08:00
2026-08-04 20:57:15 +08:00
2026-08-04 20:57:15 +08:00
2026-08-04 20:57:15 +08:00
2026-08-09 15:53:40 +08:00
2026-08-07 03:09:57 +08:00
2026-08-24 12:02:53 +08:00
2026-07-28 17:21:32 +08:00
2026-08-04 20:57:15 +08:00
2026-09-20 16:41:49 +08:00
2026-09-20 16:41:49 +08:00
2026-09-05 16:05:17 +08:00
2026-08-18 04:14:15 +00:00
2026-08-30 09:28:40 +08:00
2026-08-30 09:28:40 +08:00
2026-09-08 18:50:06 +08:00
2026-09-02 20:16:57 +08:00
2026-09-26 17:13:10 +08:00
2026-09-03 12:48:02 +08:00
2026-09-11 10:05:24 +08:00
2026-09-17 04:14:14 +09:00
2026-08-01 22:39:33 +08:00
2026-08-20 18:16:38 -07:00
2026-08-20 18:16:38 -07:00
2026-09-26 17:13:10 +08:00
2026-09-26 17:13:10 +08:00
2026-09-26 17:13:10 +08:00
2026-07-27 15:20:03 +00:00
2026-09-26 17:13:10 +08:00
2026-07-27 15:20:03 +00:00
2026-09-26 17:13:10 +08:00
2026-09-08 19:12:37 +08:00
2026-09-08 19:12:37 +08:00
2026-07-23 09:20:52 +08:00
2026-09-15 16:50:46 +08:00
2026-09-10 15:57:17 +08:00
2026-09-23 11:27:49 +08:00
2026-08-13 07:49:19 +08:00
2026-09-26 17:13:10 +08:00
2026-09-15 16:50:46 +08:00
2026-09-15 16:50:46 +08:00
2026-09-26 17:13:10 +08:00
2026-08-13 08:38:10 +08:00
2026-08-20 09:50:23 -07:00
2026-09-17 04:14:14 +09:00
2026-08-07 16:29:57 +08:00
2026-09-17 04:14:14 +09:00
2026-08-24 09:03:37 +08:00
2026-09-08 13:37:53 +08:00
2026-09-08 13:37:53 +08:00
2026-09-01 15:18:30 +08:00
2026-09-01 15:18:30 +08:00
2026-09-26 17:13:10 +08:00
2026-09-09 12:48:57 +08:00
2026-09-03 10:51:12 +08:00
2026-08-31 21:04:29 +08:00
2026-09-07 19:44:03 +08:00
2026-09-05 19:58:47 +08:00
2026-09-03 11:39:23 +08:00
2026-09-03 10:51:12 +08:00
2026-09-11 15:39:13 +08:00
2026-08-14 18:18:53 +08:00
2026-08-14 18:18:53 +08:00
2026-08-20 22:01:20 -07:00
2026-09-06 20:38:17 +08:00
2026-09-05 15:32:29 +08:00
2026-09-23 11:19:17 +08:00
2026-09-23 08:17:48 +08:00
2026-07-26 13:33:56 +08:00
2026-07-26 13:33:56 +08:00
2026-08-19 18:51:21 +08:00
2026-09-05 16:05:17 +08:00
2026-09-21 10:23:10 +08:00
2026-09-11 15:57:09 +08:00
2026-09-12 14:34:31 +08:00
2026-08-19 04:40:32 +00:00
2026-08-19 04:40:32 +00:00
2026-09-07 18:33:39 +08:00
2026-09-10 15:57:17 +08:00
2026-08-14 16:23:52 +08:00
2026-08-01 22:39:33 +08:00
2026-09-07 17:58:20 +08:00
2026-08-20 22:01:20 -07:00
2026-09-04 10:14:29 +08:00
2026-08-28 13:17:43 +08:00
2026-08-17 19:45:07 +08:00
2026-08-27 21:50:53 +08:00
2026-08-13 08:37:57 +08:00
2026-08-13 08:37:57 +08:00
2026-08-20 22:01:20 -07:00
2026-09-26 17:13:10 +08:00
2026-09-26 17:13:10 +08:00
2026-08-19 23:13:40 -07:00
2026-08-04 15:09:29 +08:00
2026-08-04 20:57:15 +08:00
2026-09-16 13:19:15 +08:00
2026-09-16 13:19:15 +08:00
2026-08-19 09:03:37 -07:00
2026-08-19 09:03:37 -07:00
2026-08-11 11:56:46 +08:00
2026-08-11 11:56:46 +08:00
2026-09-17 04:14:14 +09:00
2026-09-17 04:14:14 +09:00
2026-08-06 20:34:37 +08:00
2026-09-11 00:50:17 +08:00
2026-09-14 11:45:53 +08:00
2026-09-14 11:45:53 +08:00
2026-08-28 23:32:11 +08:00
2026-08-28 23:32:11 +08:00
2026-08-07 17:58:23 +08:00
2026-08-01 11:29:58 +08:00
2026-07-28 17:21:32 +08:00
2026-08-19 23:13:40 -07:00
2026-09-23 15:26:35 +08:00