Current section

Files

Jump to
ra src ra_log_sup.erl
Raw

src/ra_log_sup.erl

%% @hidden
-module(ra_log_sup).
-behaviour(supervisor).
%% API functions
-export([start_link/1]).
%% Supervisor callbacks
-export([init/1]).
-spec start_link(DataDir :: file:filename()) ->
{ok, pid()} | ignore | {error, term()}.
start_link(DataDir) ->
supervisor:start_link({local, ?MODULE}, ?MODULE, [DataDir]).
init([DataDir]) ->
PreInit = #{id => ra_log_pre_init,
start => {ra_log_pre_init, start_link, [DataDir]}},
Meta = #{id => ra_log_meta,
start => {ra_log_meta, start_link, [DataDir]}},
SegmentMaxEntries = application:get_env(ra, segment_max_entries, 4096),
SegWriterConf = #{data_dir => DataDir,
segment_conf => #{max_count => SegmentMaxEntries}},
SegWriter = #{id => ra_log_segment_writer,
start => {ra_log_segment_writer, start_link,
[SegWriterConf]}},
WalConf = #{dir => ra_env:wal_data_dir()},
SupFlags = #{strategy => one_for_all, intensity => 5, period => 5},
WalSup = #{id => ra_log_wal_sup,
type => supervisor,
start => {ra_log_wal_sup, start_link, [WalConf]}},
{ok, {SupFlags, [PreInit, Meta, SegWriter, WalSup]}}.