Hacker News Digest

12 августа 2026 г. в 14:22 • tailscale.com • ⭐ 1051 • 💬 196

OriginalHN

#backup#bug#checkpoint#integrity-check#s3#sqlite#tailscale#wal

Tracking down the 16-year-old WAL-reset SQLite bug

В конце 2023 года у Tailscale появилась система‑широких сбоев, вызванных редкой формой повреждения SQLite‑базы. Инциденты начались в августе, когда резервные копии, сохраняемые каждые несколько минут в S3, начали падать: PRAGMA integrity_check фиксировал повреждение, а восстановление требовало ручного ввода нескольких конфигураций. За полгода было зафиксировано 19 повторяющихся случаев, пока не выяснилось, что виновником стал баг в самом SQLite, связанный с особенностями WAL‑режима и агрессивным чекпоинтом.

Ключевой факт — SQLite не предназначен для одновременного чтения и записи в режиме «многократных» контрольных точек; при слишком частых сохранений он может «перезаписать» журнал и повредить файл. Команда обнаружила, что в их конфигурации WAL‑файл сбрасывается в момент, когда открывается новый процесс‑чтение, что приводит к гонке условий. Исправив настройку резервного копирования и добавив небольшую задержку перед сбросом WAL, они устранили проблему, а также подготовили патч для ядра SQLite, который будет включён в будущие версии. Теперь сервис стабилен уже несколько месяцев, а команда планирует более тщательно тестировать любые нестандартные схемы использования «скучной» технологии.