From 085d6c9ba002981fdab6366e2b69ee944168e4c3 Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Thu, 29 Jul 2021 00:57:40 +0200 Subject: [PATCH] fix(emqx_schema): resolve os env in translation default value is a part of schema which should be static and deterministic between different run-time or build-time environment --- apps/emqx/src/emqx_schema.erl | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/apps/emqx/src/emqx_schema.erl b/apps/emqx/src/emqx_schema.erl index a317611fa..8ccc2971d 100644 --- a/apps/emqx/src/emqx_schema.erl +++ b/apps/emqx/src/emqx_schema.erl @@ -153,10 +153,8 @@ fields("node") -> sensitive => true, override_env => "EMQX_NODE_COOKIE" })} - , {"data_dir", t(string(), undefined, undefined)} - , {"config_files", t(list(string()), "emqx.config_files", - [ filename:join([os:getenv("RUNNER_ETC_DIR"), "emqx.conf"]) - ])} + , {"data_dir", t(string())} + , {"config_files", t(comma_separated_list())} , {"global_gc_interval", t(duration(), undefined, "15m")} , {"crash_dump_dir", t(file(), "vm_args.-env ERL_CRASH_DUMP", undefined)} , {"dist_net_ticktime", t(duration(), "vm_args.-kernel net_ticktime", "2m")} @@ -511,14 +509,31 @@ base_listener() -> , {"rate_limit", ref("rate_limit")} ]. -translations() -> ["ekka", "kernel"]. +translations() -> ["ekka", "kernel", "emqx"]. translation("ekka") -> [ {"cluster_discovery", fun tr_cluster__discovery/1}]; translation("kernel") -> [ {"logger_level", fun tr_logger_level/1} - , {"logger", fun tr_logger/1}]. + , {"logger", fun tr_logger/1}]; + +translation("emqx") -> + [ {"config_files", fun tr_config_files/1} + ]. + +tr_config_files(Conf) -> + case conf_get("emqx.config_files", Conf) of + [_ | _] = Files -> + Files; + _ -> + case os:getenv("RUNNER_ETC_DIR") of + false -> + [filename:join([code:lib_dir(emqx), "etc", "emqx.conf"])]; + Dir -> + [filename:join([Dir, "emqx.conf"])] + end + end. tr_cluster__discovery(Conf) -> Strategy = conf_get("cluster.discovery_strategy", Conf),