tikv 疑似遇到BUG了,在恢复数据后无法重启

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 无因果

判断依据

  1. tikv#18109 open、无 fix、无 backport、may-affects-8.5 标签
  2. 客户已上报 tikv#19845,stack 完全一致(server.rs:413 / tso.rs:100 / lib.rs:481)
  3. 源码确认 init 阶段 TSO 调用无重试(expect() 直接 panic)
  4. #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 下跟进社区修复进度。

1 个赞