diff options
Diffstat (limited to 'apps/dreki/src/dreki_config.erl')
-rw-r--r-- | apps/dreki/src/dreki_config.erl | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/apps/dreki/src/dreki_config.erl b/apps/dreki/src/dreki_config.erl new file mode 100644 index 0000000..69df2d6 --- /dev/null +++ b/apps/dreki/src/dreki_config.erl @@ -0,0 +1,58 @@ +-module(dreki_config). +-include_lib("kernel/include/logger.hrl"). +-include_lib("partisan/include/partisan.hrl"). +-include("dreki_plum.hrl"). + +-export([init/1]). + +-define(CONFIG, [ + %% All stolen from bondy as partisan isn't that well documented, eh. + {partisan, [ + {broadcast_mods, [plum_db, partisan_plumtree_backend]}, + {channels, [data, rpc, membership]}, + {connect_disterl, false}, + {exchange_tick_period, timer:minutes(1)}, + {lazy_tick_period, timer:seconds(5)}, + {parallelism, 4}, + {membership_strategy, partisan_full_membership_strategy}, + {partisan_peer_service_manager, + partisan_pluggable_peer_service_manager}, + {pid_encoding, false}, + {ref_encoding, false}, + {binary_padding, false}, + {disable_fast_forward, false}, + %% Broadcast options + {broadcast, false}, + {tree_refresh, 1000}, + {relay_ttl, 5} + ]}, + + %% Same! + {plum_db, [ + {aae_enabled, true}, + {wait_for_aae_exchange, true}, + {store_open_retries_delay, 2000}, + {store_open_retry_limit, 30}, + {data_exchange_timeout, 60000}, + {hashtree_timer, 10000}, + {data_dir, "data/plumdb"}, + {partitions, 8}, + {prefixes, ?PLUM_DB_PREFIXES} + ]} +]). + +-define(PT, dreki_config_cache). + +init(_Args) -> + persistent_term:put(?PT, application:get_all_env(dreki)), + ok = set_app_configs(?CONFIG), + ?LOG_INFO(#{message => "Configured Dreki and dependencies"}), + ok = partisan_config:init(), + ok. + +set_app_configs(Configs) -> + lists:foreach(fun ({App, Params}) -> + [application:set_env(App, Key, Value) || {Key, Value} <- Params] + end, Configs), + ok. + |