JianBo He 2 лет назад
Родитель
Сommit
069afd042a
2 измененных файлов с 11 добавлено и 2 удалено
  1. 9 2
      bin/nodetool
  2. 2 0
      changes/ce/fix-10410.en.md

+ 9 - 2
bin/nodetool

@@ -272,7 +272,7 @@ chkconfig(File) ->
     end.
 
 check_license(Config) ->
-    ok = application:load(emqx_license),
+    ok = ensure_application_load(emqx_license),
     %% This checks formal license validity to ensure
     %% that the node can successfully start with the given license.
 
@@ -368,7 +368,7 @@ add_lib_dir(RootDir, Name, Vsn) ->
             %%
             %% It helps to implement the feature of dynamically searching schema.
             %% See `emqx_gateway_schema:fields(gateway)`
-            is_emqx_application(Name) andalso application:load(Name),
+            is_emqx_application(Name) andalso ensure_application_load(Name),
             ok;
         {error, _} -> error(LibDir)
     end.
@@ -379,3 +379,10 @@ is_emqx_application("emqx_" ++ _Rest) ->
     true;
 is_emqx_application(_) ->
     false.
+
+ensure_application_load(Name) ->
+    case application:load(Name) of
+        ok -> ok;
+        {error, {already_loaded, _}} -> ok;
+        {error, Reason} -> error({failed_to_load_application, Name, Reason})
+    end.

+ 2 - 0
changes/ce/fix-10410.en.md

@@ -0,0 +1,2 @@
+Fix EMQX starting failed once any gateways configured in emqx.conf.
+This issue was first introduced in v5.0.22 via [#10278](https://github.com/emqx/emqx/pull/10278).