Tailscale нашла причину повреждения базы данных в 16-летнем баге SQLite
Компания Tailscale, разработчик одноимённой сети на базе WireGuard, рассказала о расследовании, которое привело её к давней ошибке в SQLite — одной из самых распространённых встраиваемых СУБД в мире.
По данным публикации, инженеры столкнулись с повреждением базы данных и, разбираясь в причинах, вышли на дефект в механизме сброса журнала упреждающей записи (WAL, write-ahead log). Судя по описанию, ошибка оставалась незамеченной около шестнадцати лет.
WAL — это режим журналирования, при котором изменения сначала пишутся в отдельный журнал, а лишь затем переносятся в основной файл базы. Такой подход повышает производительность и устойчивость к сбоям, но именно на этапе сброса журнала и проявилась проблема, которую удалось локализовать команде Tailscale.
История показательна тем, насколько долго способны прятаться дефекты даже в зрелом и чрезвычайно широко используемом коде: SQLite работает в браузерах, мобильных приложениях, операционных системах и множестве серверных сервисов, поэтому редкие граничные случаи всплывают лишь при огромном объёме реальной эксплуатации. Публикация вызвала заметный отклик на Hacker News, набрав более четырёхсот голосов и десятки комментариев.
Подробности воспроизведения и характера ошибки изложены в оригинальной статье Tailscale.
Источник: Hacker News
Комментарии
Войдите, чтобы комментировать.