From a3be1529c61b4efd23ff2a1e1a0a3c6808321fad Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Fri, 28 Jul 2023 14:47:11 -0300 Subject: [PATCH] fix(schema): ensure enterprise module is correctly loaded Fixes https://emqx.atlassian.net/browse/EMQX-10654 Despite loading the application in `nodetool`, we need to invoke `:module_info()` to force the module to be actually loaded, especially when it's called in `call_hocon` to generate the initial configurations. Otherwise, it'll fail to list all the bridge schemas. --- apps/emqx/src/emqx.app.src | 2 +- apps/emqx_bridge/src/emqx_bridge.app.src | 2 +- apps/emqx_bridge/src/schema/emqx_bridge_schema.erl | 6 ++++++ changes/ee/fix-11366.en.md | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 changes/ee/fix-11366.en.md diff --git a/apps/emqx/src/emqx.app.src b/apps/emqx/src/emqx.app.src index 5ee4e2688..cff8cf35b 100644 --- a/apps/emqx/src/emqx.app.src +++ b/apps/emqx/src/emqx.app.src @@ -2,7 +2,7 @@ {application, emqx, [ {id, "emqx"}, {description, "EMQX Core"}, - {vsn, "5.1.3"}, + {vsn, "5.1.4"}, {modules, []}, {registered, []}, {applications, [ diff --git a/apps/emqx_bridge/src/emqx_bridge.app.src b/apps/emqx_bridge/src/emqx_bridge.app.src index fabf4d334..c9ea7d6bc 100644 --- a/apps/emqx_bridge/src/emqx_bridge.app.src +++ b/apps/emqx_bridge/src/emqx_bridge.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_bridge, [ {description, "EMQX bridges"}, - {vsn, "0.1.24"}, + {vsn, "0.1.25"}, {registered, [emqx_bridge_sup]}, {mod, {emqx_bridge_app, []}}, {applications, [ diff --git a/apps/emqx_bridge/src/schema/emqx_bridge_schema.erl b/apps/emqx_bridge/src/schema/emqx_bridge_schema.erl index 673dcfc16..ff924ac8c 100644 --- a/apps/emqx_bridge/src/schema/emqx_bridge_schema.erl +++ b/apps/emqx_bridge/src/schema/emqx_bridge_schema.erl @@ -87,12 +87,18 @@ bridge_api_union(Refs) -> -if(?EMQX_RELEASE_EDITION == ee). 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 true -> emqx_bridge_enterprise:api_schemas(Method); false -> [] end. 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 true -> emqx_bridge_enterprise:fields(bridges); false -> [] diff --git a/changes/ee/fix-11366.en.md b/changes/ee/fix-11366.en.md new file mode 100644 index 000000000..ed205e0f9 --- /dev/null +++ b/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.