Given a cluster of two instances - i1, i2and i1 is a raft leaderWhen i2 is stoppedand i2 data-dir is removedand i2 is started with the same command-line arguments as beforeThen i2 should become a follower
In scope of this issue the scenario should be fixed and covered with a pytest.
при ребутстрапе фолловера лидер не знает что фолловер уничтожен
когда мы перезапускаем фолловера - он для лидера выглядит как новый
лидер пытается добавить его в таблицу пиров и добиться кворума со старым фолловером, который ответить не может, лидер получает connection refused
новый инстанс получает timeout на присоединение к кластеру
Предварительное решение: запретить добавлять в кластер инстанс, если заявленный id уже существует в таблице пиров. То есть не пытаться обойти рафт и реабилитировать умершую ноду.
Тогда данная задача преобразуется в "как установить кворум в кластере из двух инстансов, один из которых недоступен?" (например сделав экспелл).
С правилами джойн запросов мы разобрались (!179 (3daeb759)). Джойн запросы больше не таймаутятся. Джойн запрос - это всега новый инстанс (голый, без снапшотов).
Ну а без кворума никакой магии не произойдет, эта часть не будет починена примерно никогда.