Prhub

#48206 fix flaky multi example connector consistency

原始 PR 作者 aarushjain29 合并时间 2026-07-15 15:20 文件变更 1 提交数 4 评论 0 代码增减 +22 / -4

执行摘要

修复 kv-connector 多连接器测试的间歇性失败

修复测试 test_multi_example_connector_consistency 的间歇性失败。该测试断言每个连接器的调度器事件序列,期望 on_new_request 位于窗口索引 0。但异步引擎核心在前一个生成周期的空闲步骤中发射的 build_connector_meta 可能因时序问题在下一个窗口的索引 0 出现,导致断言失败(build_connector_meta != on_new_request)。PR body 明确指出这是良性的、仅测试层面的排序问题。

值得快速合并。这是一个典型且设计良好的测试稳定性修复,体现了对异步时序问题的精准定位和最小侵入式修复。开发者可以关注 _events_from_request 的设计,未来类似竞态问题可复用该模式。

讨论亮点

本次 PR 没有 review 评论。审核人 NickLucche 直接批准(APPROVED)。claude[bot] 自动评论提示 fork 仓库未启用自动审核。

实现拆解

  1. 新增辅助函数 _events_from_request:在文件末尾添加 _events_from_request(events: list[str]) -> list[str],功能是查找事件列表中第一个 "on_new_request" 事件的位置,并返回从该位置开始到结尾的子列表;如果列表中没有 "on_new_request",则原样返回。该函数通过将事件窗口锚定到新请求的第一个事件来忽略前一个请求泄漏的尾部事件。
  2. 修改两次 generate 调用后的断言:将原本直接对 _ignore_event_collection(...) 结果的切片断言,改为先通过 _events_from_request 处理,再对返回列表的前 4 个元素做断言。这样,即使有尾部 build_connector_meta 提前出现,也会被自动丢弃。
  3. 保持原断言强度不变:所有关于请求内事件顺序、get_num_new_matched_tokensupdate_state_after_alloc 的数值断言均未改变,仅丢弃了请求开始前的无关事件。
文件 模块 状态 重要度
tests/v1/kv_connector/unit/test_multi_connector.py KV 连接器 modified 4.89

关键符号

_events_from_request

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

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低。变更仅限单个测试文件,新增的 _events_from_request 函数逻辑简单(查找列表索引并切片),测试逻辑清晰。生产代码未受影响。唯一潜在风险是该辅助函数假设 on_new_request 是事件序列中唯一正确的锚点,如果未来事件模式发生变化(例如 on_new_request 缺失或出现顺序改变),测试可能需要调整,但本 PR 不会引入新问题。

影响范围极小,仅影响 test_multi_example_connector_consistency 这一个测试用例。该测试的稳定性得到提升,在异步引擎核心下不再因事件时序问题间歇性失败。对用户无影响,对系统无性能或功能影响。

仅测试变更

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论