• kontiki raft Haskell Доработал я либу чтоб можно было конфиги менять. И захотел рассказать забавную сказочку. Поскольку автор рекомендует конфиги менять удалением/добавлением одного узла за раз. То необходимо сделать так, чтоб конфиг из одного узла успешно работал. Такой себе вырожденный случай. Удаление же выполняется таким образом что удаляемому узлу сообщение не доходит и этот узел погрязает в вечных выборах, но его все игнорят.
    Так вот если в конфиге из 3 узлов поочерёдно удалить 2 узла получится славная картина. 2 удалённых начнут выборы и смогут собрать majority и завалить одиночный узел лидера ну и сами сдохнут из-за неконсистентных конфигов.
    ♡ recommended by @qnikst, @HEDiN, @segfault

Replies (8)

  • @dr-Chaos, Хм.. Мне вот не нравится первре удаление, т.к. получается система из двух узлов, в которой очень печально получать консенсус
  • @qnikst, Ну и 1<[3/2]
  • @qnikst, ты абсолютно прав. Это Use case разрушения кластера. Правда тут можно проще несколько сделать. Добавить кнопочку разрушить кластер. Чтоб всем ралеталось сообщение: почистить стейт и ждать.
  • @dr-Chaos, а juno ты смотрел?
  • @qrilka, видел, но ещё не смотрел. На первый взгляд, там не было membership change и byzantine tolerance в моём случае не критична, но штука интересная, да.
  • @dr-Chaos, у нас вроде узлы сначала договариваются о новой конфигурации разом и потом работают, но этот кейс скорее всего из коробки не подлерживается
  • @qnikst, Там есть 2 подхода:
    1. Когда конфигурация подменяется за один раз. Причём можно менять чуть ли не целиком. Она, однако, более сложная и есть вероятность расползтись на 2 разных кучи.
    2. Когда добавить/удалить можно один узел за раз. Она проще, и у большинства всегда есть нормальное состояние конфигурации, либо предыдущее, либо новое.
    Диего в первой версии своего тезиса и в logCabin сделал 1й вариант, но в окончательном варианте тезис рекомендуется 2й, хотя первый так же описан.
  • @dr-Chaos, 1. Когда конфигурация подменяется за один раз. Причём можно менять чуть ли не целиком. Она, однако, более сложная и есть вероятность расползтись на 2 разных кучи.

    если целиком то да, если в новой конфигурации остаётся majority с текущей, то не вижу почему.