Procházet zdrojové kódy

Merge pull request #11366 from thalesmg/fix-load-ee-module-20230728

fix(schema): ensure enterprise module is correctly loaded
Thales Macedo Garitezi před 2 roky
rodič
revize
b24e7e2559

+ 1 - 1
apps/emqx/src/emqx.app.src

@@ -2,7 +2,7 @@
 {application, emqx, [
 {application, emqx, [
     {id, "emqx"},
     {id, "emqx"},
     {description, "EMQX Core"},
     {description, "EMQX Core"},
-    {vsn, "5.1.3"},
+    {vsn, "5.1.4"},
     {modules, []},
     {modules, []},
     {registered, []},
     {registered, []},
     {applications, [
     {applications, [

+ 1 - 1
apps/emqx_bridge/src/emqx_bridge.app.src

@@ -1,7 +1,7 @@
 %% -*- mode: erlang -*-
 %% -*- mode: erlang -*-
 {application, emqx_bridge, [
 {application, emqx_bridge, [
     {description, "EMQX bridges"},
     {description, "EMQX bridges"},
-    {vsn, "0.1.24"},
+    {vsn, "0.1.25"},
     {registered, [emqx_bridge_sup]},
     {registered, [emqx_bridge_sup]},
     {mod, {emqx_bridge_app, []}},
     {mod, {emqx_bridge_app, []}},
     {applications, [
     {applications, [

+ 6 - 0
apps/emqx_bridge/src/schema/emqx_bridge_schema.erl

@@ -87,12 +87,18 @@ bridge_api_union(Refs) ->
 
 
 -if(?EMQX_RELEASE_EDITION == ee).
 -if(?EMQX_RELEASE_EDITION == ee).
 enterprise_api_schemas(Method) ->
 enterprise_api_schemas(Method) ->
+    %% We *must* do this to ensure the module is really loaded, especially when we use
+    %% `call_hocon' from `nodetool' to generate initial configurations.
+    _ = emqx_bridge_enterprise:module_info(),
     case erlang:function_exported(emqx_bridge_enterprise, api_schemas, 1) of
     case erlang:function_exported(emqx_bridge_enterprise, api_schemas, 1) of
         true -> emqx_bridge_enterprise:api_schemas(Method);
         true -> emqx_bridge_enterprise:api_schemas(Method);
         false -> []
         false -> []
     end.
     end.
 
 
 enterprise_fields_bridges() ->
 enterprise_fields_bridges() ->
+    %% We *must* do this to ensure the module is really loaded, especially when we use
+    %% `call_hocon' from `nodetool' to generate initial configurations.
+    _ = emqx_bridge_enterprise:module_info(),
     case erlang:function_exported(emqx_bridge_enterprise, fields, 1) of
     case erlang:function_exported(emqx_bridge_enterprise, fields, 1) of
         true -> emqx_bridge_enterprise:fields(bridges);
         true -> emqx_bridge_enterprise:fields(bridges);
         false -> []
         false -> []

+ 1 - 0
changes/ee/fix-11366.en.md

@@ -0,0 +1 @@
+Fixed an issue that could prevent a pod from starting if some bridge configuration were specified in `bootstrapConfig` using EMQX Operator.