diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src b/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src index 8b66965b1..ab6dd53e7 100644 --- a/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src @@ -1,6 +1,6 @@ {application, emqx_auth_jwt, [{description, "EMQ X Authentication with JWT"}, - {vsn, "4.4.8"}, % strict semver, bump manually! + {vsn, "4.4.9"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_auth_jwt_sup]}, {applications, [kernel,stdlib,jose]}, diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src b/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src index 0c2c0e58f..9f6ac4b9b 100644 --- a/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src @@ -1,38 +1,14 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.4.7",[{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, - {"4.4.6", - [{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, - {"4.4.5", - [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, - {"4.4.4", - [{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, - {"4.4.3", - [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, - {"4.4.2", + [{"4.4.8",[{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.[2-7]">>, [{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, {<<"4\\.4\\.[0-1]">>,[{restart_application,emqx_auth_jwt}]}, {<<".*">>,[]}], - [{"4.4.7",[{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, - {"4.4.6", - [{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, - {"4.4.5", - [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, - {"4.4.4", - [{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, - {"4.4.3", - [{load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, - {"4.4.2", + [{"4.4.8",[{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.[2-7]">>, [{load_module,emqx_auth_jwt_svr,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_jwt,brutal_purge,soft_purge,[]}]}, {<<"4\\.4\\.[0-1]">>,[{restart_application,emqx_auth_jwt}]}, diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt_svr.erl b/apps/emqx_auth_jwt/src/emqx_auth_jwt_svr.erl index 3713e74f3..30a3fa19d 100644 --- a/apps/emqx_auth_jwt/src/emqx_auth_jwt_svr.erl +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt_svr.erl @@ -99,13 +99,13 @@ handle_cast(_Msg, State) -> {noreply, State}. handle_info({timeout, _TRef, refresh}, State = #state{addr = Addr}) -> - NState = try - true = ets:insert(?TAB, {remote, request_jwks(Addr)}), - State - catch _:_ -> - State - end, - {noreply, reset_timer(NState)}; + try + true = ets:insert(?TAB, {remote, request_jwks(Addr)}) + catch Err:Reason -> + ?LOG_SENSITIVE(warning, "Request JWKS failed, jwks_addr: ~p, reason: ~p", + [Addr, {Err, Reason}]) + end, + {noreply, reset_timer(State)}; handle_info({request_jwks, Options}, State) -> Remote = key2jwt_value(jwks_addr, fun request_jwks/1, Options), diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src index a3bf1e914..b58be5d2e 100644 --- a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src @@ -1,6 +1,6 @@ {application, emqx_bridge_mqtt, [{description, "EMQ X Bridge to MQTT Broker"}, - {vsn, "4.3.7"}, % strict semver, bump manually! + {vsn, "4.3.8"}, % strict semver, bump manually! {modules, []}, {registered, []}, {applications, [kernel,stdlib,replayq,emqtt]}, diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src index a6ca580f1..013371592 100644 --- a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src @@ -1,7 +1,9 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.6", + [{"4.3.7", + [{load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.6", [{load_module,emqx_bridge_connect,brutal_purge,soft_purge,[]}, {load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[4-5]">>, @@ -21,7 +23,9 @@ {load_module,emqx_bridge_worker,brutal_purge,soft_purge,[]}, {load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.6", + [{"4.3.7", + [{load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.6", [{load_module,emqx_bridge_connect,brutal_purge,soft_purge,[]}, {load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, {<<"4\\.3\\.[4-5]">>, diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl index b5d43f5f4..b43d44eac 100644 --- a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl @@ -111,11 +111,11 @@ zh => <<"桥接挂载点"/utf8>>}, description => #{ en => <<"MountPoint for bridge topic:
" - "Example: The topic of messages sent to `topic1` on local node " - "will be transformed to `bridge/aws/${node}/topic1`">>, + "Example: The topic of messages sent to topic1 on local node " + "will be transformed to bridge/aws/${node}/topic1">>, zh => <<"桥接主题的挂载点:
" - "示例: 本地节点向 `topic1` 发消息,远程桥接节点的主题" - "会变换为 `bridge/aws/${node}/topic1`"/utf8>> + "示例: 本地节点向 topic1 发消息,远程桥接节点的主题" + "会变换为 bridge/aws/${node}/topic1"/utf8>> } }, disk_cache => #{ @@ -267,10 +267,10 @@ type => string, required => true, default => <<"emqx2@127.0.0.1">>, - title => #{en => <<"EMQ X Node Name">>, - zh => <<"EMQ X 节点名称"/utf8>>}, - description => #{en => <<"EMQ X Remote Node Name">>, - zh => <<"远程 EMQ X 节点名称 "/utf8>>} + title => #{en => <<"EMQX Node Name">>, + zh => <<"EMQX 节点名称"/utf8>>}, + description => #{en => <<"EMQX Remote Node Name">>, + zh => <<"远程 EMQX 节点名称 "/utf8>>} }, mountpoint => #{ order => 2, @@ -280,11 +280,11 @@ title => #{en => <<"Bridge MountPoint">>, zh => <<"桥接挂载点"/utf8>>}, description => #{en => <<"MountPoint for bridge topic
" - "Example: The topic of messages sent to `topic1` on local node " - "will be transformed to `bridge/aws/${node}/topic1`">>, + "Example: The topic of messages sent to topic1 on local node " + "will be transformed to bridge/emqx/${node}/topic1">>, zh => <<"桥接主题的挂载点
" - "示例: 本地节点向 `topic1` 发消息,远程桥接节点的主题" - "会变换为 `bridge/aws/${node}/topic1`"/utf8>>} + "示例: 本地节点向 topic1 发消息,远程桥接节点的主题" + "会变换为 bridge/emqx/${node}/topic1"/utf8>>} }, pool_size => #{ order => 3, @@ -358,7 +358,7 @@ destroy => on_resource_destroy, params => ?RESOURCE_CONFIG_SPEC_RPC, title => #{en => <<"EMQX Bridge">>, zh => <<"EMQX Bridge"/utf8>>}, - description => #{en => <<"EMQ X RPC Bridge">>, zh => <<"EMQ X RPC 消息桥接"/utf8>>} + description => #{en => <<"EMQX RPC Bridge">>, zh => <<"EMQX RPC 消息桥接"/utf8>>} }). -rule_action(#{ diff --git a/changes/v4.4.15-en.md b/changes/v4.4.15-en.md index 5836b24b1..a225eb3bb 100644 --- a/changes/v4.4.15-en.md +++ b/changes/v4.4.15-en.md @@ -16,6 +16,10 @@ ## Bug fixes +- fix some issues in descriptions of the actions, resources amd emqx-modules [#9931](https://github.com/emqx/emqx/pull/9931). + +- fix there's no error logs when query the JWKS server failed [#9931](https://github.com/emqx/emqx/pull/9931). + - The returned client lists of HTTP query `GET /api/v4/clients?_page=2&_limit=20` to different nodes might be inconsistent [#9926](https://github.com/emqx/emqx/pull/9926). - Fix the problem that new MQTT TLS connections failed to establish after release hot upgrade [#9810](https://github.com/emqx/emqx/pull/9810). diff --git a/changes/v4.4.15-zh.md b/changes/v4.4.15-zh.md index dd2471888..2d5fe953a 100644 --- a/changes/v4.4.15-zh.md +++ b/changes/v4.4.15-zh.md @@ -16,6 +16,10 @@ ## 修复 +- 修复资源、动作以及模块里的一些描述错误 [#9931](https://github.com/emqx/emqx/pull/9931)。 + +- 修复请求 JWKS 服务失败的时候,没有日志打印的问题 [#9931](https://github.com/emqx/emqx/pull/9931)。 + - 使用 HTTP API `GET /api/v4/clients?_page=2&_limit=20` 请求客户端列表时,请求发送到不同的 emqx 节点,返回的客户端列表可能不一致 [#9926](https://github.com/emqx/emqx/pull/9926)。 - 修复版本热升级之后,新的 MQTT TLS 连接建立失败的问题 [#9810](https://github.com/emqx/emqx/pull/9810)。 diff --git a/lib-ce/emqx_modules/src/emqx_mod_acl_internal.erl b/lib-ce/emqx_modules/src/emqx_mod_acl_internal.erl index 044a4e80d..e36b056f9 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_acl_internal.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_acl_internal.erl @@ -57,7 +57,7 @@ reload(Env) -> unload(Env), load(Env). description() -> - "EMQ X Internal ACL Module". + "EMQX Internal ACL Module". %%-------------------------------------------------------------------- %% ACL callbacks %%-------------------------------------------------------------------- diff --git a/lib-ce/emqx_modules/src/emqx_mod_delayed.erl b/lib-ce/emqx_modules/src/emqx_mod_delayed.erl index 8f2a816ba..62c0c5132 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_delayed.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_delayed.erl @@ -95,7 +95,7 @@ unload(_Env) -> emqx_mod_sup:stop_child(?MODULE). description() -> - "EMQ X Delayed Publish Module". + "EMQX Delayed Publish Module". %%-------------------------------------------------------------------- %% Hooks %%-------------------------------------------------------------------- diff --git a/lib-ce/emqx_modules/src/emqx_mod_presence.erl b/lib-ce/emqx_modules/src/emqx_mod_presence.erl index eb1019a76..b73a2b8d1 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_presence.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_presence.erl @@ -46,7 +46,7 @@ unload(_Env) -> emqx_hooks:del('client.disconnected', {?MODULE, on_client_disconnected}). description() -> - "EMQ X Presence Module". + "EMQX Presence Module". %%-------------------------------------------------------------------- %% Callbacks %%-------------------------------------------------------------------- diff --git a/lib-ce/emqx_modules/src/emqx_mod_rewrite.erl b/lib-ce/emqx_modules/src/emqx_mod_rewrite.erl index e40c1f3b9..c21211d78 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_rewrite.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_rewrite.erl @@ -71,7 +71,7 @@ unload(_) -> emqx_hooks:del('message.publish', {?MODULE, rewrite_publish}). description() -> - "EMQ X Topic Rewrite Module". + "EMQX Topic Rewrite Module". %%-------------------------------------------------------------------- %% Internal functions %%-------------------------------------------------------------------- diff --git a/lib-ce/emqx_modules/src/emqx_mod_slow_subs.erl b/lib-ce/emqx_modules/src/emqx_mod_slow_subs.erl index 199f130f0..cb6d55509 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_slow_subs.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_slow_subs.erl @@ -46,4 +46,4 @@ unload(_Env) -> ok. description() -> - "EMQ X Slow Subscribers Statistics Module". + "EMQX Slow Subscribers Statistics Module". diff --git a/lib-ce/emqx_modules/src/emqx_mod_subscription.erl b/lib-ce/emqx_modules/src/emqx_mod_subscription.erl index 8b8851ea9..2fc5048a5 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_subscription.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_subscription.erl @@ -71,7 +71,7 @@ unload(_) -> emqx_hooks:del('client.connected', {?MODULE, on_client_connected}). description() -> - "EMQ X Subscription Module". + "EMQX Subscription Module". %%-------------------------------------------------------------------- %% Internal functions %%-------------------------------------------------------------------- diff --git a/lib-ce/emqx_modules/src/emqx_mod_topic_metrics.erl b/lib-ce/emqx_modules/src/emqx_mod_topic_metrics.erl index f28b9bce0..71ad1cb80 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_topic_metrics.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_topic_metrics.erl @@ -113,7 +113,7 @@ unload(_Env) -> emqx_mod_sup:stop_child(?MODULE). description() -> - "EMQ X Topic Metrics Module". + "EMQX Topic Metrics Module". on_message_publish(#message{topic = Topic, qos = QoS}) -> case is_registered(Topic) of diff --git a/lib-ce/emqx_modules/src/emqx_mod_trace.erl b/lib-ce/emqx_modules/src/emqx_mod_trace.erl index d57296136..012dc9e73 100644 --- a/lib-ce/emqx_modules/src/emqx_mod_trace.erl +++ b/lib-ce/emqx_modules/src/emqx_mod_trace.erl @@ -28,7 +28,7 @@ -spec description() -> string(). description() -> - "EMQ X Trace Module". + "EMQX Trace Module". -spec load(any()) -> ok. load(_Env) -> diff --git a/lib-ce/emqx_modules/src/emqx_modules.appup.src b/lib-ce/emqx_modules/src/emqx_modules.appup.src index 3f43fd093..3e1f7fb5d 100644 --- a/lib-ce/emqx_modules/src/emqx_modules.appup.src +++ b/lib-ce/emqx_modules/src/emqx_modules.appup.src @@ -1,85 +1,75 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.4.8",[{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]}, - {"4.4.7",[{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]}, - {"4.4.6", - [{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]}, - {"4.4.5", - [{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}]}, - {"4.4.4", - [{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}]}, - {"4.4.3", - [{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}]}, - {"4.4.2", - [{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}]}, - {"4.4.1", - [{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]}, - {"4.4.0", - [{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, + [{<<"4\\.4\\.[6-8]">>, + [{load_module,emqx_mod_acl_internal,brutal_purge,soft_purge,[]}, {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, {load_module,emqx_mod_presence,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_sup,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}]}, + {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_slow_subs,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_topic_metrics,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace,brutal_purge,soft_purge,[]} + ]}, + {<<"4\\.4\\.[1-5]">>, + [{load_module,emqx_mod_acl_internal,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_presence,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_slow_subs,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_topic_metrics,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_modules,brutal_purge,soft_purge,[]} + ]}, + {"4.4.0", + [{load_module,emqx_mod_acl_internal,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_presence,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_slow_subs,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_topic_metrics,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_modules,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_sup,brutal_purge,soft_purge,[]} + ]}, {<<".*">>,[]}], - [{"4.4.8",[{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]}, - {"4.4.7",[{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}]}, - {"4.4.6", - [{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]}, - {"4.4.5", - [{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}]}, - {"4.4.4", - [{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}]}, - {"4.4.3", - [{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}]}, - {"4.4.2", - [{load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}]}, - {"4.4.1", - [{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}]}, - {"4.4.0", - [{load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, - {load_module,emqx_modules,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, + [{<<"4\\.4\\.[6-8]">>, + [{load_module,emqx_mod_acl_internal,brutal_purge,soft_purge,[]}, {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, {load_module,emqx_mod_presence,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_sup,brutal_purge,soft_purge,[]}, - {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}]}, + {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_slow_subs,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_topic_metrics,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace,brutal_purge,soft_purge,[]} + ]}, + {<<"4\\.4\\.[1-5]">>, + [{load_module,emqx_mod_acl_internal,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_presence,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_slow_subs,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_topic_metrics,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_modules,brutal_purge,soft_purge,[]} + ]}, + {"4.4.0", + [{load_module,emqx_mod_acl_internal,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_delayed,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_presence,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_rewrite,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_slow_subs,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_subscription,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_topic_metrics,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_trace_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_modules,brutal_purge,soft_purge,[]}, + {load_module,emqx_mod_sup,brutal_purge,soft_purge,[]} + ]}, {<<".*">>,[]}]}.