From 7beaa91814db94c0c1693eae4f5b85720a1bb034 Mon Sep 17 00:00:00 2001 From: Zhongwen Deng Date: Wed, 9 Mar 2022 19:24:33 +0800 Subject: [PATCH] fix: schema mod error --- apps/emqx/src/emqx_release.erl | 2 +- apps/emqx_conf/src/emqx_conf.erl | 9 +++++++++ apps/emqx_conf/src/emqx_conf_app.erl | 8 +------- apps/emqx_management/src/emqx_mgmt_api_configs.erl | 13 ++++++++----- .../test/emqx_mgmt_api_configs_SUITE.erl | 2 +- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/apps/emqx/src/emqx_release.erl b/apps/emqx/src/emqx_release.erl index 650b8bdae..1c9ada376 100644 --- a/apps/emqx/src/emqx_release.erl +++ b/apps/emqx/src/emqx_release.erl @@ -41,7 +41,7 @@ description() -> %% @doc Return EMQX edition info. %% Read info from persistent_term at runtime. -%% Or meck this function to run tests for another eidtion. +%% Or meck this function to run tests for another edition. -spec edition() -> ce | ee | edge. -ifdef(EMQX_RELEASE_EDITION). edition() -> ?EMQX_RELEASE_EDITION. diff --git a/apps/emqx_conf/src/emqx_conf.erl b/apps/emqx_conf/src/emqx_conf.erl index 9505da455..0c5ecc28a 100644 --- a/apps/emqx_conf/src/emqx_conf.erl +++ b/apps/emqx_conf/src/emqx_conf.erl @@ -26,6 +26,7 @@ -export([remove/2, remove/3]). -export([reset/2, reset/3]). -export([dump_schema/1, dump_schema/2]). +-export([schema_module/0]). %% for rpc -export([get_node_and_config/1]). @@ -145,6 +146,14 @@ dump_schema(Dir, SchemaModule) -> ok = gen_hot_conf_schema(HotConfigSchemaFile), ok. +%% @doc return the root schema module. +-spec schema_module() -> module(). +schema_module() -> + case os:getenv("SCHEMA_MOD") of + false -> emqx_conf_schema; + Value -> list_to_existing_atom(Value) + end. + %%-------------------------------------------------------------------- %% Internal functions %%-------------------------------------------------------------------- diff --git a/apps/emqx_conf/src/emqx_conf_app.erl b/apps/emqx_conf/src/emqx_conf_app.erl index 38393b8a4..79412b8c5 100644 --- a/apps/emqx_conf/src/emqx_conf_app.erl +++ b/apps/emqx_conf/src/emqx_conf_app.erl @@ -35,15 +35,9 @@ stop(_State) -> init_conf() -> {ok, TnxId} = copy_override_conf_from_core_node(), emqx_app:set_init_tnx_id(TnxId), - emqx_config:init_load(schema_module()), + emqx_config:init_load(emqx_conf:schema_module()), emqx_app:set_init_config_load_done(). -schema_module() -> - case os:getenv("SCHEMA_MOD") of - false -> emqx_conf_schema; - Value -> list_to_existing_atom(Value) - end. - copy_override_conf_from_core_node() -> case nodes() of [] -> %% The first core nodes is self. diff --git a/apps/emqx_management/src/emqx_mgmt_api_configs.erl b/apps/emqx_management/src/emqx_mgmt_api_configs.erl index d26a4fc75..46746ed0d 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_configs.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_configs.erl @@ -136,10 +136,12 @@ find_schema(Path) -> Configs = config_list(), lists:keyfind(list_to_binary(Root), 1, Configs). -%% we load all configs from emqx_conf_schema, some of them are defined as local ref -%% we need redirect to emqx_conf_schema. -%% such as hoconsc:ref("node") to hoconsc:ref(emqx_conf_schema, "node") -fields(Field) -> emqx_conf_schema:fields(Field). +%% we load all configs from emqx_*_schema, some of them are defined as local ref +%% we need redirect to emqx_*_schema. +%% such as hoconsc:ref("node") to hoconsc:ref(emqx_*_schema, "node") +fields(Field) -> + Mod = emqx_conf:schema_module(), + apply(Mod, fields, [Field]). %%%============================================================================================== %% HTTP API Callbacks @@ -201,7 +203,8 @@ conf_path_from_querystr(Req) -> end. config_list() -> - Roots = hocon_schema:roots(emqx_conf_schema), + Mod = emqx_conf:schema_module(), + Roots = hocon_schema:roots(Mod), lists:foldl(fun(Key, Acc) -> lists:keydelete(Key, 1, Acc) end, Roots, ?EXCLUDES). conf_path(Req) -> diff --git a/apps/emqx_management/test/emqx_mgmt_api_configs_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_configs_SUITE.erl index 4be40b3b1..3e748b4ef 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_configs_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_configs_SUITE.erl @@ -35,7 +35,7 @@ t_get(_Config) -> maps:map(fun(Name, Value) -> {ok, Config} = get_config(Name), ?assertEqual(Value, Config) - end, Configs), + end, maps:remove(<<"license">>, Configs)), ok. t_update(_Config) ->