refactor raw_node ownership
Сейчас обработка всех разнообразных операций с рафтом (propose, tick, timeout_now) происходит внутри функции raft_main_loop
, который получает их через Mailbox<NormalRequest>
. Это негативно сказывается на сложности raft_main_loop
.
От передачи сообщений следует отказаться. Вместо этого все разделяемые ресурсы (raw_node, pool, topology_cache итд) надо вынести в отдельную внутреннюю структуру (назовем ее пока NodeInner
) и спрятать в tarantool::fiber::Mutex
. Все операции вместо отправки сообщений пусть получают эксклюзивный доступ к NodeInner
. Обработку ready можно оставить в raft_main_loop.