Реализация Raft на TypeScript прошла сидированную симуляцию: каждый тик, задержка сообщения и падение узла задаются сидом. На двадцать пятом прогоне две реплики применили разные значения — при том, что все правила алгоритма выполнялись.
Автор отмечает: интересен не сам баг, а то, какая проверка его поймала. И вопрос, который из этого следует: откуда известно, что остальные проверки вообще на что-то смотрят.
Читать далее
