#55823 [Bugfix][KV Offload] Reuse in-flight async lookup probes
原始 PR · 作者 Alex-ai-future · 合并时间 2026-09-14 20:02
缺陷修复
重要性 6.99
洞察度 6.00
KV Offload 异步查找复用在途探针,消除重复后端探测
值得精读,尤其是关注「用显式状态机替代布尔标记」这一设计决策:`LookupPhase` 让 `flush()` / `drain_results()` / `cleanup()` 三处的判定条件自解释,也顺带把「孤儿回收」这一新职责安放到 `drain_results()` 这个唯一的结果入口,避免了在多处散落删除逻辑。测试手法同样值得借鉴:用 `monkeypatch` 把 `batch_lookup` 换成受 `threading.Event` 控制的 `blocking_lookup`,把并发时序钉死成确定性断言(`batch_lookup_calls == 1`),比 sleep 轮询稳健得多。阅读时建议重点核对两点:一是 worker 在 `batch_lookup` 异常时是否一定投递结果(决定在途状态是否会永久滞留),二是 `flush()` 无条件 drain 后是否还有别的地方依赖旧的结果可见时序。建议对 `AsyncLookupManager` 增加一个长跑/压力场景的回收断言,作为对本次状态驻留改动的兜底。