Все пять safety-свойств Raft прошли — а две реплики всё равно разошлись
Реализацию Raft на TypeScript прогнали через сидированную симуляцию: каждый тик, задержка сообщения и падение узла жёстко задаются сидом. Это делает баги воспроизводимыми — запустил тот же сид и получил ту же картину.
И вот на двадцать пятом прогоне две реплики применили разные значения. При этом формально все правила алгоритма выполнялись — ни одно safety-свойство не нарушилось.
Самое любопытное тут не сам баг, а то, какая именно проверка его поймала. И вопрос, который из этого вырастает: а откуда вообще известно, что остальные проверки хоть на что-то смотрят, а не просто молча проходят?
Зелёные тесты — ещё не гарантия того, что они реально что-то тестируют
Подписывайся, чтобы не пропустить разборы багов и внутренностей распределённых систем — здесь выходит регулярно
#Raft #TypeScript #тестирование

t.me/coding_python_development/499Translating to English…
3
2
2
1August 25, 2026 914 1