diff --git a/apps/emqx_machine/src/emqx_machine_boot.erl b/apps/emqx_machine/src/emqx_machine_boot.erl index 9d45f791e..93bd31f21 100644 --- a/apps/emqx_machine/src/emqx_machine_boot.erl +++ b/apps/emqx_machine/src/emqx_machine_boot.erl @@ -85,7 +85,6 @@ reboot_apps() -> , esockd , ranch , cowboy - , emqx_conf , emqx , emqx_prometheus , emqx_modules @@ -121,7 +120,8 @@ sorted_reboot_apps(Apps) -> NoDepApps = add_apps_to_digraph(G, Apps), case digraph_utils:topsort(G) of Sorted when is_list(Sorted) -> - Sorted ++ (NoDepApps -- Sorted); + %% ensure emqx_conf boot up first + [emqx_conf | Sorted ++ (NoDepApps -- Sorted)]; false -> Loops = find_loops(G), error({circular_application_dependency, Loops}) diff --git a/apps/emqx_machine/test/emqx_machine_tests.erl b/apps/emqx_machine/test/emqx_machine_tests.erl index 1a562b815..074167f95 100644 --- a/apps/emqx_machine/test/emqx_machine_tests.erl +++ b/apps/emqx_machine/test/emqx_machine_tests.erl @@ -38,7 +38,7 @@ sorted_reboot_apps_cycle_test() -> check_order(Apps) -> AllApps = lists:usort(lists:append([[A | Deps] || {A, Deps} <- Apps])), - Sorted = emqx_machine_boot:sorted_reboot_apps(Apps), + [emqx_conf | Sorted] = emqx_machine_boot:sorted_reboot_apps(Apps), case length(AllApps) =:= length(Sorted) of true -> ok; false -> error({AllApps, Sorted})