RaftFleet.Config (raft_fleet v0.10.2) View Source

RaftFleet defines the following application configs:

  • :balancing_interval
    • Time interval between periodic triggers of workers whose job is to re-balance Raft member processes across the cluster.
    • The actual value used is obtained by Application.get_env(:raft_fleet, :balancing_interval, 60000), i.e. it defaults to 1 minute.
  • :leader_pid_cache_refresh_interval
    • Interval time in milliseconds of leader pids cached in each nodes' local ETS tables.
    • The actual value used is obtained by Application.get_env(:raft_fleet, :leader_pid_cache_refresh_interval, 300000), i.e. it defaults to 5 minutes.
  • :follower_addition_delay
    • Time duration in milliseconds to wait for before spawning a new follower for a consensus group. Concurrently spawning multiple followers may lead to race conditions (adding a member can only be done one-by-one). Although this race condition can be automatically resolved by retries and thus is basically harmless, this configuration item may be useful to reduce useless error logs.
    • The actual value used is obtained by Application.get_env(:raft_fleet, :follower_addition_delay, 200).
  • :node_purge_failure_time_window
    • A node is considered "unhealthy" if it has been disconnected from the other nodes without declaring itself as inactive (by calling RaftFleet.deactivate/0). RaftFleet tries to reconnect to unhealthy nodes in order to recover from short-term issues such as temporary network failures (see also :node_purge_reconnect_interval below). To handle longer-term issues, RaftFleet automatically removes nodes that remain "unhealthy" for this time window (in milliseconds) from the list of participating active nodes. After removal, consensus member processes are automatically re-balanced within remaining active nodes.
    • The actual value used is obtained by Application.get_env(:raft_fleet, :node_purge_failure_time_window, 600000), i.e. it defaults to 10 minutes.
  • :node_purge_reconnect_interval
    • Time interval (in milliseconds) of periodic reconnect attempts to disconnected nodes.
    • The actual value used is obtained by Application.get_env(:raft_fleet, :node_purge_reconnect_interval, 60000), i.e. it defaults to 1 minute.
  • :rafted_value_config_maker
  • :per_member_options_maker
    • A module that implements RaftFleet.PerMemberOptionsMaker behaviour. The module is used when constructing a 2nd argument of RaftedValue.start_link/2, i.e., when starting a new consensus member process. This configuration provides a way to customize options (such as whether to persist Raft logs & snapshots) for each consensus group member.
    • Defaults to nil, which means that the default options of RaftedValue.start_link/2 are used for all consensus groups.
    • Note that RaftFleet.Cluster (a special consensus group to manage metadata for :raft_fleet) also uses :per_member_options_maker module (if set). Callback implementation must handle RaftFleet.Cluster appropriately, in addition to consensus group names that are explicitly added by RaftFleet.add_consensus_group/3.
    • Note also that you cannot specify :name option by your callback implementation as it's fixed by :raft_fleet.

Note that each raft_fleet process uses application configs stored in the local node. If you want to configure the options above you must set them on all nodes in your cluster.

Link to this section Summary

Link to this section Functions

Specs

balancing_interval() :: pos_integer()
Link to this function

follower_addition_delay()

View Source

Specs

follower_addition_delay() :: pos_integer()
Link to this function

leader_pid_cache_refresh_interval()

View Source

Specs

leader_pid_cache_refresh_interval() :: pos_integer()
Link to this function

node_purge_failure_time_window()

View Source

Specs

node_purge_failure_time_window() :: pos_integer()
Link to this function

node_purge_reconnect_interval()

View Source

Specs

node_purge_reconnect_interval() :: pos_integer()
Link to this function

per_member_options_maker()

View Source

Specs

per_member_options_maker() :: nil | module()
Link to this function

rafted_value_config_maker()

View Source

Specs

rafted_value_config_maker() :: nil | module()