Ferricstore.Raft.Cluster (ferricstore v0.4.3)

Copy Markdown View Source

WARaft cluster facade for FerricStore shards.

This module keeps the cluster-management boundary narrow so callers do not reach into WARaft internals directly.

Summary

Functions

add_member(shard_index, node, membership \\ :voter)

@spec add_member(non_neg_integer(), node(), atom()) :: :ok | {:error, term()}

add_member(shard_index, node, membership, opts)

@spec add_member(non_neg_integer(), node(), atom(), keyword()) ::
  :ok | {:error, term()}

force_delete_server_on(target_node, system, server_id)

@spec force_delete_server_on(node(), atom(), tuple()) :: :ok

join_shard_server(shard_index, shard_data_path, active_file_id, active_file_path, ets, cluster_members, opts \\ [])

@spec join_shard_server(
  non_neg_integer(),
  binary(),
  non_neg_integer(),
  binary(),
  atom(),
  [node()],
  keyword()
) :: :ok

member_overview(shard)

@spec member_overview(non_neg_integer() | tuple()) ::
  {:error, :unsupported_member_overview}

member_overview_on(target_node, server_id)

@spec member_overview_on(node(), tuple()) :: {:error, :unsupported_member_overview}

members(shard_index)

@spec members(non_neg_integer()) :: {:ok, list(), term()} | {:error, term()}

members(shard_index, timeout)

@spec members(non_neg_integer(), timeout() | :default) ::
  {:ok, list(), term()} | {:error, term()}

remove_member(shard_index, node)

@spec remove_member(non_neg_integer(), node()) :: :ok | {:error, term()}

start_shard_server(shard_index, shard_data_path, active_file_id, active_file_path, ets, opts \\ [])

@spec start_shard_server(
  non_neg_integer(),
  binary(),
  non_neg_integer(),
  binary(),
  atom(),
  keyword()
) :: :ok

start_system(data_dir)

@spec start_system(binary()) :: :ok

stop_server_on(target_node, system, server_id)

@spec stop_server_on(node(), atom(), tuple()) :: :ok

stop_shard_server(shard_index)

@spec stop_shard_server(non_neg_integer()) :: :ok

stop_system()

@spec stop_system() :: :ok

system_name()

@spec system_name() :: atom()

Returns the WARaft system name used by FerricStore.

transfer_leadership(shard_index, target_node)

@spec transfer_leadership(non_neg_integer(), node()) :: :ok | {:error, term()}

trigger_shard_elections_parallel(shard_count, opts \\ [])

@spec trigger_shard_elections_parallel(
  non_neg_integer(),
  keyword()
) :: :ok | {:error, term()}