[Перевод] Баг в SQLite скрывался 16 лет: как Tailscale потратила полгода на его поиски

#Перевод #SQLite #Tailscale #Инженеры #Читать
[Перевод] Баг в SQLite скрывался 16 лет: как Tailscale потратила полгода на его поиски

За полгода Tailscale 19 раз столкнулась с повреждением баз SQLite, но воспроизвести сбой не удавалось: между инцидентами проходили то часы, то недели. Инженеры собирали диагностику прямо в продакшене, проверяли одну гипотезу за другой и в итоге нашли редкую гонку между записью и созданием контрольной точки — баг, который скрывался в SQLite минимум 16 лет. Читать расследование

В конце прошлого года с доступностью нашего сервиса всё было довольно плохо. Это хорошо видно на странице статуса, и нестабильность продолжилась уже в новом году. Причиной многих сбоев оказался один-единственный баг глубоко внутри SQLite. На его поиски ушли месяцы напряжённого расследования.

Сейчас уже лето прошло, и мы уверены, что нашли этот баг, разобрались, как он работает, а главное – исправили его.

Мы понимаем, что пользователи ждут от Tailscale надёжной работы, и несколько месяцев мы этим ожиданиям не соответствовали. Мы написали эту статью, чтобы рассказать, что пошло не так, как мы действовали и как в итоге помогли обнаружить давний баг в самом сердце SQLite.

TL;DR: