reckon_db_store_coordinator (reckon_db v1.3.2)

View Source

Store coordinator for reckon-db

Coordinates cluster join operations and prevents split-brain scenarios.

Responsibilities: - Detecting existing clusters via RPC - Coordinator election (lowest node name) - Coordinated cluster joining - Split-brain prevention

Summary

Functions

Check if this node is the leader

Join the Khepri cluster using coordinated approach

Join a specific node's cluster

Get current leader node

Get cluster members

Check if this node should handle nodeup events

Types

store_config/0

-type store_config() ::
          #store_config{store_id :: atom(),
                        data_dir :: string(),
                        mode :: single | cluster,
                        timeout :: pos_integer(),
                        writer_pool_size :: pos_integer(),
                        reader_pool_size :: pos_integer(),
                        gateway_pool_size :: pos_integer(),
                        options :: map()}.

Functions

handle_call(Request, From, State)

handle_cast(Msg, State)

handle_info(Info, State)

init(Store_config)

is_leader(StoreId)

-spec is_leader(atom()) -> boolean().

Check if this node is the leader

join_cluster(StoreId)

-spec join_cluster(atom()) -> ok | coordinator | no_nodes | waiting | failed.

Join the Khepri cluster using coordinated approach

join_cluster(StoreId, TargetNode)

-spec join_cluster(atom(), node()) -> ok | {error, term()}.

Join a specific node's cluster

leader(StoreId)

-spec leader(atom()) -> {ok, node()} | {error, no_leader}.

Get current leader node

members(StoreId)

-spec members(atom()) -> {ok, [term()]} | {error, term()}.

Get cluster members

should_handle_nodeup(StoreId)

-spec should_handle_nodeup(atom()) -> boolean().

Check if this node should handle nodeup events

start_link(Store_config)

-spec start_link(store_config()) -> {ok, pid()} | {error, term()}.

terminate(Reason, State)