fix(emqx_mgmt_data_backup): implement importer modules ordering
`emqx_bridge_v2` depends on `emqx_connector`, so connectors must be imported first.
This commit is contained in:
parent
bc8c291820
commit
0562585c8f
|
@ -61,6 +61,12 @@
|
||||||
<<"slow_subs">>
|
<<"slow_subs">>
|
||||||
]).
|
]).
|
||||||
|
|
||||||
|
%% emqx_bridge_v2 depends on emqx_connector, so connectors need to be imported first
|
||||||
|
-define(IMPORT_ORDER, [
|
||||||
|
emqx_connector,
|
||||||
|
emqx_bridge_v2
|
||||||
|
]).
|
||||||
|
|
||||||
-define(DEFAULT_OPTS, #{}).
|
-define(DEFAULT_OPTS, #{}).
|
||||||
-define(tar(_FileName_), _FileName_ ++ ?TAR_SUFFIX).
|
-define(tar(_FileName_), _FileName_ ++ ?TAR_SUFFIX).
|
||||||
-define(fmt_tar_err(_Expr_),
|
-define(fmt_tar_err(_Expr_),
|
||||||
|
@ -534,7 +540,7 @@ do_import_conf(RawConf, Opts) ->
|
||||||
GenConfErrs = filter_errors(maps:from_list(import_generic_conf(RawConf))),
|
GenConfErrs = filter_errors(maps:from_list(import_generic_conf(RawConf))),
|
||||||
maybe_print_errors(GenConfErrs, Opts),
|
maybe_print_errors(GenConfErrs, Opts),
|
||||||
Errors =
|
Errors =
|
||||||
lists:foldr(
|
lists:foldl(
|
||||||
fun(Module, ErrorsAcc) ->
|
fun(Module, ErrorsAcc) ->
|
||||||
case Module:import_config(RawConf) of
|
case Module:import_config(RawConf) of
|
||||||
{ok, #{changed := Changed}} ->
|
{ok, #{changed := Changed}} ->
|
||||||
|
@ -545,11 +551,27 @@ do_import_conf(RawConf, Opts) ->
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
GenConfErrs,
|
GenConfErrs,
|
||||||
find_behaviours(emqx_config_backup)
|
sort_importer_modules(find_behaviours(emqx_config_backup))
|
||||||
),
|
),
|
||||||
maybe_print_errors(Errors, Opts),
|
maybe_print_errors(Errors, Opts),
|
||||||
Errors.
|
Errors.
|
||||||
|
|
||||||
|
sort_importer_modules(Modules) ->
|
||||||
|
lists:sort(
|
||||||
|
fun(M1, M2) -> order(M1, ?IMPORT_ORDER) =< order(M2, ?IMPORT_ORDER) end,
|
||||||
|
Modules
|
||||||
|
).
|
||||||
|
|
||||||
|
order(Elem, List) ->
|
||||||
|
order(Elem, List, 0).
|
||||||
|
|
||||||
|
order(_Elem, [], Order) ->
|
||||||
|
Order;
|
||||||
|
order(Elem, [Elem | _], Order) ->
|
||||||
|
Order;
|
||||||
|
order(Elem, [_ | T], Order) ->
|
||||||
|
order(Elem, T, Order + 1).
|
||||||
|
|
||||||
import_generic_conf(Data) ->
|
import_generic_conf(Data) ->
|
||||||
lists:map(
|
lists:map(
|
||||||
fun(Key) ->
|
fun(Key) ->
|
||||||
|
|
Loading…
Reference in New Issue