AI 综合分析
最终结论 + 对客回复
核心结论
tikv#18109 已知 bug,TiKV v8.5.4 受影响,目前无 fix。
TiKV 启动 init 阶段调用 block_on(pd_client.get_tso()).expect(...) 获取首次 TSO,该调用无重试机制。底层 tso-worker 线程因 TSO gRPC stream 异常退出后,所有 pending 的 oneshot 通道被 drop,报 “Timestamp channel is dropped” → 直接 FATAL panic。
该问题已被客户独立上报为 tikv#19845(2026-07-16),cross-ref 到 #18109。
触发条件
BR 全量恢复后 PD 处于 region meta 密集写入窗口,TSO gRPC stream 易被瞬时 reset,触发此 bug。jepsen 随机测试可在无任何外部操作下复现,时区变更与本 bug 无因果。
判断依据
- tikv#18109 open、无 fix、无 backport、
may-affects-8.5标签 - 客户已上报 tikv#19845,stack 完全一致(server.rs:413 / tso.rs:100 / lib.rs:481)
- 源码确认 init 阶段 TSO 调用无重试(
expect()直接 panic) - #18109 jepsen 可稳定复现,无需时区变更等外部操作
建议对客回复
您遇到的问题对应 tikv/tikv#18109(已知 bug,截至当前仍 open,无 fix)。同问题您已独立上报为 tikv#19845,社区会跟进处理。
根因:TiKV 启动阶段首次获取 TSO 时,底层 TSO gRPC stream 因异常断开,但 init 阶段无重试机制,直接触发 FATAL panic。
触发场景:BR 全量恢复后 PD 处于 region 元数据密集加载窗口,TSO stream 易被瞬时 reset,属于该 bug 的典型触发条件。
临时恢复:确认 PD 健康后重新启动 TiKV 即可(等 PD 渡过 meta 加载窗口后通常能成功)。若反复失败,建议在 tikv#19845 下跟进社区修复进度。