头版Folia Daily Briefing
← 返回头版
科技互联网

Tailscale追踪数据库损坏根源:16年老SQLite缺陷浮出水面

Tailscale在过去六个月内遭遇多次数据库故障,经过数月调查,最终与SQLite开发者联手发现了问题所在——一个至少存在16年的罕见数据竞争缺陷,被称为WAL-Reset bug[1]。这一bug在特定时刻的写入操作与checkpoint过程冲突时被触发,最终导致数据丢失和数据库损坏[1]。

Tailscale从去年年底至新年期间共经历了19次独立的数据库损坏事件[1]。为了定位这一根深蒂固的问题,Tailscale部署了新的调试工具tmstmpvfs shim[1]。调查发现,Tailscale采用非标准方式手动控制checkpoint过程并执行激进的checkpoint策略,这使得缺陷更容易被触发[1]。

SQLite官方在3.51.3版本中发布了针对WAL-Reset bug的修复[1]。Tailscale随即部署该版本,经过四个月的无故障运行确认问题已得到解决[1]。两个月后收到的警报进一步确认WAL-Reset bug确实在生产环境中发生过[1]。


TailscaleSQLite数据库corruptionWAL-Reset bug技术故障