Repository navigation
fix: propagate passthrough stream errors and handle spill cleanup races - #491
Conversation
|
您好,感谢维护。 这个 PR 是 #487 的同类问题在 Passthrough 分支(原生
想麻烦评估是否能合入,并随下一个版本发布?需要调整我随时改。 |
|
透传断流时向客户端发送明确错误有实际价值,尤其能保留已收到的内容并说明失败原因。审查当前 head
建议按以下步骤修复:
必要验证命令: cargo test --locked -p codexmanager-service --lib passthrough -- --test-threads=1
cargo test --locked -p codexmanager-service --lib gateway::http_bridge:: -- --test-threads=1
cargo test --locked -p codexmanager-service --test gateway_logs gateway_aggregate_compatible_messages_passthrough_accepts_message_stop -- --test-threads=1
cargo test --locked -p codexmanager-service --test gateway_logs hybrid_aggregate_only_streams_chat_completions_tool_calls_from_aggregate_api -- --test-threads=1
cargo fmt --all -- --check
git diff --check上述新增边界用例还需要实际执行;建议再用本地故障上游通过网关验证 chat 透传的正常完成、工具完成、未闭合尾帧和断流错误,并用实际 SSE 客户端解析结果。PR 作者此前提供的本地验证说明有参考价值,但本次审查没有独立复跑该链路,也未调用外部模型。 |
|
已补齐修复并推送原 PR 分支,最终提交
验证:流修复的 passthrough 48/48、http_bridge 155/155 通过;本地网关 Anthropic message_stop 与 Chat tool_calls 两项集成通过;格式和 diff 检查通过。最终 head 的三个 CI 全部成功:run 38055714103。已核对 Linux 日志,新增删除时序用例和原失败 queue_clear 用例均实际执行通过。 联合检查中的四项模型数量旧断言已在当前 main 逐项复现,并由 #492 补齐;四项修复的完整联合验证继续在 #492 收尾。本 PR 的修复范围已在描述中明确为 PassthroughSseUsageReader,不宣称覆盖原生 该改动能让客户端正确识别透传断流原因,符合项目需要,可以合并。 |
上游 Chat/Generic 或 Anthropic 原生透传流提前结束、读错误或超时时,客户端此前只得到静默断流。本 PR 保留已交付的内容并发送明确错误:Generic 使用 OpenAI SSE error,AnthropicNative 使用原生
event: error。/v1/responses使用独立 reader,本 PR 不宣称修复所有 Responses 透传路径。验证:passthrough 48 项、http_bridge 155 项通过,两项本地网关 Anthropic message_stop 与 Chat tool_calls 集成通过,格式及 diff 检查通过。新增流测试使用生产异步 pump 和 eventsource-stream 解析,覆盖两种协议、尾部换行/半截 JSON、四种异常结束、文本/工具正常结束、MCP 子事件及矛盾的完成状态。最终 core、联合工作区和 CI 结果见维护者评论;没有调用外部模型或生产账户。