Prhub

#37483 [CI] Fix realtime WebSocket timeout deadlock and unhandled model validation errors

原始 PR 作者 AndreasKaratzas 合并时间 2026-03-25 18:24 文件变更 2 提交数 7 评论 6 代码增减 +83 / -3

执行摘要

修复 ROCm 平台 realtime WebSocket 死锁和模型验证错误处理漏洞

PR body中明确表述:"Fix silent deadlock when ROCm JIT compilation exceeds the default 60s VLLM_ENGINE_ITERATION_TIMEOUT_S, causing feed_tokens in voxtral_realtime.py to die and hang generation forever" 和 "Fix _check_model() return value being ignored in session.update handler because model was marked validated even when not found"。这些是修复死锁和错误处理的主要动机。

建议工程师精读此PR,重点关注handle_event方法中的错误处理改进和测试用例设计,这些是提升realtime功能健壮性的关键。同时,了解ROCm平台特定超时设置的调整策略。

讨论亮点

review中的核心讨论包括:gemini-code-assist[bot]建议使用event.get("model")代替event["model"]以防止KeyError,此建议被采纳并在代码中修改;NickLucche请求添加测试用例以覆盖新增的错误处理,作者响应并添加了两个新测试。讨论聚焦于代码健壮性和测试覆盖,无重大争议或未解决疑虑。

实现拆解

实现方案包括两个关键改动点:

1) 在测试文件tests/entrypoints/openai/realtime/test_realtime_validation.py中,定义REALTIME_ENV_OVERRIDES环境变量覆盖,将VLLM_ENGINE_ITERATION_TIMEOUT_S设为600秒以匹配现有warmup超时,并添加两个新测试用例test_session_update_invalid_model_returns_errortest_commit_without_session_update_returns_error,验证错误处理路径。
2) 在连接处理文件vllm/entrypoints/openai/realtime/connection.py中,修改handle_event方法,使用安全访问event.get("model")替代event["model"],并正确处理_check_model的返回值,添加缺失的return语句防止fall-through逻辑。

文件 模块 状态 重要度
tests/entrypoints/openai/realtime/test_realtime_validation.py frontend/realtime testing modified 5.0
vllm/entrypoints/openai/realtime/connection.py frontend/realtime connection modified 6.0

关键符号

handle_event

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

安全访问 model 字段以防止 KeyError 正确性

gemini-code-assist[bot] 指出使用 `event["model"]` 不安全,建议改用 `event.get("model")` 以避免客户端发送不含 model 字段的事件时引发 KeyError。

结论:建议被采纳,代码中已修改为使用 `event.get("model")`。 · 已解决

添加测试用例覆盖新增错误处理 测试

NickLucche 请求添加测试用例以验证 PR 中修复的两个错误路径,确保错误处理正确性。

结论:作者响应并在测试文件中添加了两个新测试,验证无效模型和未验证提交的错误返回。 · 已解决

风险与影响

技术风险具体包括:

1) 超时设置从60秒增加到600秒可能掩盖其他性能瓶颈或引入潜在延迟问题,需监控ROCm平台的JIT编译性能;
2) 错误处理逻辑在vllm/entrypoints/openai/realtime/connection.pyhandle_event方法中变更,可能影响所有realtime连接的事件处理流程,需确保回归测试覆盖充分;
3) 新增测试用例需验证其正确性和稳定性,以防误报或漏报。

影响范围:对用户而言,ROCm平台realtime WebSocket服务更稳定,减少因死锁导致的服务中断;对系统而言,错误处理更准确,防止silent failures和未处理异常,提升整体可靠性;对团队而言,代码质量改善,测试覆盖增强,便于后续维护和调试。影响程度中等,主要局限在ROCm平台和frontend模块的realtime功能。

超时调整潜在风险 错误处理逻辑变更

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论