diff --git a/src/ra_server.erl b/src/ra_server.erl index 6ae440ac..914396fe 100644 --- a/src/ra_server.erl +++ b/src/ra_server.erl @@ -206,7 +206,9 @@ await_condition_timeout => non_neg_integer(), max_pipeline_count => non_neg_integer(), ra_event_formatter => {module(), atom(), [term()]}, + %% Deprecated in favor of counter_label: counter => counters:counters_ref(), + counter_label => seshat:label(), membership => ra_membership(), system_config => ra_system:config(), has_changed => boolean() @@ -214,6 +216,7 @@ -type mutable_config() :: #{cluster_name => ra_cluster_name(), metrics_key => term(), + counter_label => seshat:label(), broadcast_time => non_neg_integer(), % ms tick_timeout => non_neg_integer(), % ms install_snap_rpc_timeout => non_neg_integer(), % ms diff --git a/src/ra_server_proc.erl b/src/ra_server_proc.erl index 94b605bf..8ae80433 100644 --- a/src/ra_server_proc.erl +++ b/src/ra_server_proc.erl @@ -303,8 +303,21 @@ do_init(#{id := Id, true = ets:insert(ra_state, {Key, init, unknown}), process_flag(trap_exit, true), Config = #{counter := Counter, - system_config := SysConf} = maps:merge(config_defaults(Id), + system_config := SysConf} = maps:merge(config_defaults(), Config0), + Counter = case maps:find(counter, Config) of + {ok, C} -> + C; + error -> + case ra_counters:fetch(Id) of + undefined -> + Label = maps:get(counter_label, Config, Id), + ra_counters:new( + Id, {persistent_term, ?FIELDSPEC_KEY}, Label); + C -> + C + end + end, MsgQData = maps:get(message_queue_data, SysConf, off_heap), MinBinVheapSize = maps:get(server_min_bin_vheap_size, SysConf, ?MIN_BIN_VHEAP_SIZE), @@ -1709,20 +1722,12 @@ gen_statem_safe_call(ServerId, Msg, Timeout) -> do_state_query(QueryName, #state{server_state = State}) -> ra_server:state_query(QueryName, State). -config_defaults(ServerId) -> - Counter = case ra_counters:fetch(ServerId) of - undefined -> - ra_counters:new(ServerId, - {persistent_term, ?FIELDSPEC_KEY}); - C -> - C - end, +config_defaults() -> #{broadcast_time => ?DEFAULT_BROADCAST_TIME, tick_timeout => ?TICK_INTERVAL_MS, install_snap_rpc_timeout => ?INSTALL_SNAP_RPC_TIMEOUT, await_condition_timeout => ?DEFAULT_AWAIT_CONDITION_TIMEOUT, initial_members => [], - counter => Counter, system_config => ra_system:default_config() }.