See also RFC. Closes #311 (closed)
Needs tarantool-module!364 (merged)
InstanceReachabilityManager
entity which is responsible for tracking outcomes of raft messages sent to cluster instances.ConnectionPoolWorker
s now report to the reachability manager (by calling InstanceReachabilityManager::report_result
) if instances didn't respond to raft messages.InstanceReachabilityManager::get_unreachables_to_report
) for info about instances which should be reported as unreachable and calls RawNode::report_unreachable
for them which udpates raft node's internal state. After that most messages are not being sent the reported instances, until these instances start sending raft messages to the leader.InstanceReachabilityManager::should_send_heartbeat_this_tick
sentinel
which is now responsible for changing target grades in most cases:
InstanceReachabilityManager
for a list of unreachable instances and if one of them has target grade == Online, then it sends a CaS request to change it to Offlineon_shutdown
trigger was also changed accordingly. It used to spawn a fiber to change it's target grade to Offline, but now it just wakes up the sentinel and notifies it that graceful shutdown is in progress.auto_offline_timeout
and max_heartbeat_period
pico properties which configure the appropriate behavior