From 5402ff7fd888dd5d666b252c7b1e0fe9e886eddd Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Thu, 9 Mar 2023 20:16:55 +0800 Subject: [PATCH] chore: port changes from e4.4 back to v4.4 --- .../src/emqx_auth_redis.appup.src | 12 +++-- apps/emqx_auth_redis/src/emqx_auth_redis.erl | 1 + .../src/emqx_bridge_mqtt.appup.src | 8 ++- .../src/emqx_bridge_mqtt_actions.erl | 1 - .../src/emqx_plugin_libs.appup.src | 8 +-- .../src/emqx_plugin_libs_ssl.erl | 10 +++- .../src/emqx_rule_engine.appup.src | 49 ++++++++++++------- .../emqx_rule_engine/src/emqx_rule_engine.erl | 9 +++- .../src/emqx_rule_runtime.erl | 8 ++- .../emqx_web_hook/src/emqx_web_hook.appup.src | 8 +-- .../src/emqx_web_hook_actions.erl | 1 - src/emqx_app.erl | 8 ++- src/emqx_relup.erl | 42 +++++++++++----- 13 files changed, 114 insertions(+), 51 deletions(-) diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src b/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src index c3c25571a..9e99fa763 100644 --- a/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src +++ b/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src @@ -1,8 +1,10 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.4", - [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, + [{"4.3.5",[{load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}]}, + {"4.3.4", + [{load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, {"4.3.3", [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, @@ -18,8 +20,10 @@ {load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, {load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.4", - [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, + [{"4.3.5",[{load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}]}, + {"4.3.4", + [{load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}]}, {"4.3.3", [{load_module,emqx_acl_redis,brutal_purge,soft_purge,[]}, {load_module,emqx_auth_redis,brutal_purge,soft_purge,[]}, diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis.erl b/apps/emqx_auth_redis/src/emqx_auth_redis.erl index fae22f3f1..2b8f75574 100644 --- a/apps/emqx_auth_redis/src/emqx_auth_redis.erl +++ b/apps/emqx_auth_redis/src/emqx_auth_redis.erl @@ -47,6 +47,7 @@ check(ClientInfo = #{password := Password}, AuthResult, end, case CheckPass of ok -> + ?LOG_SENSITIVE(debug, "[Redis] Auth from redis succeeded, Client: ~p", [ClientInfo]), IsSuperuser = is_superuser(Pool, Type, SuperCmd, ClientInfo, Timeout), {stop, AuthResult#{is_superuser => IsSuperuser, anonymous => false, 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 013371592..a488502a0 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.7", + [{"4.3.8", + [{load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, + {"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,[]}, @@ -23,7 +25,9 @@ {load_module,emqx_bridge_worker,brutal_purge,soft_purge,[]}, {load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.7", + [{"4.3.8", + [{load_module,emqx_bridge_mqtt_actions,brutal_purge,soft_purge,[]}]}, + {"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,[]}, 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 67b5a7a2e..b43d44eac 100644 --- a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl @@ -482,7 +482,6 @@ on_resource_destroy(ResId, #{<<"pool">> := PoolName}) -> ?LOG(info, "Destroying Resource ~p, ResId: ~p", [?RESOURCE_TYPE_MQTT, ResId]), case ecpool:stop_sup_pool(PoolName) of ok -> - emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId), ?LOG(info, "Destroyed Resource ~p Successfully, ResId: ~p", [?RESOURCE_TYPE_MQTT, ResId]); {error, Reason} -> ?LOG(error, "Destroy Resource ~p failed, ResId: ~p, ~p", [?RESOURCE_TYPE_MQTT, ResId, Reason]), diff --git a/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src b/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src index cbc9eaed3..f463631fd 100644 --- a/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src +++ b/apps/emqx_plugin_libs/src/emqx_plugin_libs.appup.src @@ -1,8 +1,8 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.4.6", - [{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, + [{"4.4.7",[{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, + {"4.4.6",[{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, {<<"4\\.4\\.[3-5]">>, [{load_module,emqx_trace,brutal_purge,soft_purge,[]}, {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}, @@ -22,8 +22,8 @@ {update,emqx_slow_subs,{advanced,["4.4.0"]}}, {load_module,emqx_slow_subs_api,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.4.6", - [{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, + [{"4.4.7",[{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, + {"4.4.6",[{load_module,emqx_plugin_libs_ssl,brutal_purge,soft_purge,[]}]}, {<<"4\\.4\\.[3-5]">>, [{load_module,emqx_trace,brutal_purge,soft_purge,[]}, {load_module,emqx_trace_api,brutal_purge,soft_purge,[]}, diff --git a/apps/emqx_plugin_libs/src/emqx_plugin_libs_ssl.erl b/apps/emqx_plugin_libs/src/emqx_plugin_libs_ssl.erl index 4526dfb37..15588ab76 100644 --- a/apps/emqx_plugin_libs/src/emqx_plugin_libs_ssl.erl +++ b/apps/emqx_plugin_libs/src/emqx_plugin_libs_ssl.erl @@ -18,6 +18,7 @@ -export([save_files_return_opts/2, save_files_return_opts/3, + save_files_return_opts/4, save_file/2 ]). @@ -42,11 +43,18 @@ -type opt_key() :: keyfile | certfile | cacertfile | verify | versions | ciphers. -type opt_value() :: term(). -type opts() :: [{opt_key(), opt_value()}]. +-type dirname() :: atom() | string() | binary(). %% @doc Parse ssl options input. %% If the input contains file content, save the files in the given dir. %% Returns ssl options for Erlang's ssl application. --spec save_files_return_opts(opts_input(), atom() | string() | binary(), +-spec save_files_return_opts(opts_input(), dirname(), + string() | binary(), dirname()) -> opts(). +save_files_return_opts(Options, SubDir, ResId, ResSubdir) -> + Dir = filename:join([emqx:get_env(data_dir), SubDir, ResId, ResSubdir]), + save_files_return_opts(Options, Dir). + +-spec save_files_return_opts(opts_input(), dirname(), string() | binary()) -> opts(). save_files_return_opts(Options, SubDir, ResId) -> Dir = filename:join([emqx:get_env(data_dir), SubDir, ResId]), diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src index cdf8fb959..2b0493d3b 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src @@ -1,14 +1,18 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{<<"4\\.4\\.1[3-4]">>, - [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + [{"4.4.15", + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.1[3-4]">>, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - ]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, {"4.4.12", - [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, @@ -16,7 +20,8 @@ {update,emqx_rule_engine_jwt_sup,supervisor}, {load_module,emqx_rule_engine_jwt,brutal_purge,soft_purge,[]}]}, {"4.4.11", - [{load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, {update,emqx_rule_engine_jwt_sup,supervisor}, @@ -25,10 +30,10 @@ {load_module,emqx_rule_engine_sup,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}, {apply,{emqx_rule_engine_sup,ensure_api_delegator_started,[]}}, - {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - ]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, {"4.4.10", - [{add_module,emqx_rule_engine_jwt}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {add_module,emqx_rule_engine_jwt}, {add_module,emqx_rule_engine_jwt_worker}, {add_module,emqx_rule_engine_jwt_sup}, {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, @@ -45,7 +50,8 @@ {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}]}, {"4.4.9", - [{add_module,emqx_rule_engine_jwt}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {add_module,emqx_rule_engine_jwt}, {add_module,emqx_rule_engine_jwt_worker}, {add_module,emqx_rule_engine_jwt_sup}, {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, @@ -232,14 +238,18 @@ {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{<<"4\\.4\\.1[3-4]">>, - [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + [{"4.4.15", + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, + {<<"4\\.4\\.1[3-4]">>, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, - {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - ]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, {"4.4.12", - [{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, @@ -247,7 +257,8 @@ {update,emqx_rule_engine_jwt_sup,supervisor}, {load_module,emqx_rule_engine_jwt,brutal_purge,soft_purge,[]}]}, {"4.4.11", - [{load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_jwt_worker,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, {update,emqx_rule_engine_jwt_sup,supervisor}, @@ -258,7 +269,8 @@ {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}]}, {"4.4.10", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {apply,{emqx_rule_engine_sup,ensure_api_delegator_stopped,[]}}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, @@ -276,7 +288,8 @@ {delete_module,emqx_rule_engine_jwt_worker}, {delete_module,emqx_rule_engine_jwt}]}, {"4.4.9", - [{load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + [{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, {apply,{emqx_rule_engine_sup,ensure_api_delegator_stopped,[]}}, {load_module,emqx_rule_utils,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_monitor,brutal_purge,soft_purge,[]}, diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.erl b/apps/emqx_rule_engine/src/emqx_rule_engine.erl index a3bb4f992..03ae80bd9 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.erl @@ -493,13 +493,16 @@ delete_resource(ResId) -> case emqx_rule_registry:remove_resource(ResId) of ok -> _ = ?CLUSTER_CALL(clear_resource, [ModD, Destroy, ResId, ResType]), - ok; + emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId); {error, _} = R -> R end catch throw:Reason -> {error, Reason} end; not_found -> + %% always try to remove the dir as the resource might be created but have + %% not been initialized yet. + emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId), {error, not_found} end. @@ -712,7 +715,9 @@ action_instance_id(ActionName) -> iolist_to_binary([atom_to_list(ActionName), "_", integer_to_list(erlang:system_time())]). init_resource(Module, OnCreate, ResId, Config) -> - Params = ?RAISE(Module:OnCreate(ResId, Config), {Module, OnCreate}), + Params = ?RAISE(Module:OnCreate(ResId, Config), + emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId), + {Module, OnCreate}), ResParams = #resource_params{id = ResId, params = Params, status = #{is_alive => true}}, diff --git a/apps/emqx_rule_engine/src/emqx_rule_runtime.erl b/apps/emqx_rule_engine/src/emqx_rule_runtime.erl index d83731765..f8927dd05 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_runtime.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_runtime.erl @@ -265,6 +265,8 @@ take_action(#action_instance{id = Id, name = ActName, fallbacks = Fallbacks} = A emqx_rule_metrics:inc_actions_taken(Id), apply_action_func(Selected, Envs, Apply, ActName) of + badact_quiet -> + handle_action_failure(OnFailed, Id, Fallbacks, Selected, Envs, badact_quiet); {badact, Reason} -> handle_action_failure(OnFailed, Id, Fallbacks, Selected, Envs, Reason); Result -> Result @@ -320,11 +322,13 @@ wait_action_on(Id, RetryN) -> end. handle_action_failure(continue, _Id, Fallbacks, Selected, Envs = #{metadata := Metadata}, Reason) -> - ?LOG_RULE_ACTION(error, Metadata, "Continue next action, reason: ~0p", [Reason]), + Reason =/= badact_quiet andalso + ?LOG_RULE_ACTION(error, Metadata, "Continue next action, reason: ~0p", [Reason]), _ = take_actions(Fallbacks, Selected, Envs, continue), failed; handle_action_failure(stop, Id, Fallbacks, Selected, Envs = #{metadata := Metadata}, Reason) -> - ?LOG_RULE_ACTION(error, Metadata, "Skip all actions, reason: ~0p", [Reason]), + Reason =/= badact_quiet andalso + ?LOG_RULE_ACTION(error, Metadata, "Skip all actions, reason: ~0p", [Reason]), _ = take_actions(Fallbacks, Selected, Envs, continue), error({take_action_failed, {Id, Reason}}). diff --git a/apps/emqx_web_hook/src/emqx_web_hook.appup.src b/apps/emqx_web_hook/src/emqx_web_hook.appup.src index b9ed1f687..cf4f5235d 100644 --- a/apps/emqx_web_hook/src/emqx_web_hook.appup.src +++ b/apps/emqx_web_hook/src/emqx_web_hook.appup.src @@ -1,8 +1,8 @@ %% -*- mode: erlang -*- %% Unless you know what you are doing, DO NOT edit manually!! {VSN, - [{"4.3.16", - [{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + [{"4.3.17",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.16",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, {"4.3.15", [{load_module,emqx_web_hook_app,brutal_purge,soft_purge,[]}, {load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, @@ -34,8 +34,8 @@ [{load_module,emqx_web_hook_app,brutal_purge,soft_purge,[]}, {load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], - [{"4.3.16", - [{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + [{"4.3.17",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, + {"4.3.16",[{load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, {"4.3.15", [{load_module,emqx_web_hook_app,brutal_purge,soft_purge,[]}, {load_module,emqx_web_hook_actions,brutal_purge,soft_purge,[]}]}, diff --git a/apps/emqx_web_hook/src/emqx_web_hook_actions.erl b/apps/emqx_web_hook/src/emqx_web_hook_actions.erl index e8e96748e..351a8ba2b 100644 --- a/apps/emqx_web_hook/src/emqx_web_hook_actions.erl +++ b/apps/emqx_web_hook/src/emqx_web_hook_actions.erl @@ -238,7 +238,6 @@ on_resource_destroy(ResId, #{<<"pool">> := PoolName}) -> ?LOG(info, "Destroying Resource ~p, ResId: ~p", [?RESOURCE_TYPE_WEBHOOK, ResId]), case ehttpc_pool:stop_pool(PoolName) of ok -> - emqx_plugin_libs_ssl:maybe_delete_dir("rules", ResId), ?LOG(info, "Destroyed Resource ~p Successfully, ResId: ~p", [?RESOURCE_TYPE_WEBHOOK, ResId]); {error, Reason} -> ?LOG(error, "Destroy Resource ~p failed, ResId: ~p, ~p", [?RESOURCE_TYPE_WEBHOOK, ResId, Reason]), diff --git a/src/emqx_app.erl b/src/emqx_app.erl index 6efa5325d..abbe755f0 100644 --- a/src/emqx_app.erl +++ b/src/emqx_app.erl @@ -156,7 +156,10 @@ get_description() -> case os:getenv("EMQX_DESCRIPTION") of false -> Descr0; "" -> Descr0; - Str -> string:strip(Str, both, $\n) + Str -> + %% We replace the "EMQ X" to "EMQX" incase the description has been + %% loaded to the OS Envs and cannot be changed without reboot. + replace_emq_x_to_emqx(string:strip(Str, both, $\n)) end. get_release() -> @@ -183,3 +186,6 @@ start_autocluster() -> ekka:callback(reboot, fun emqx:reboot/0), _ = ekka:autocluster(?APP), %% returns 'ok' or a pid or 'any()' as in spec ok. + +replace_emq_x_to_emqx(Str) -> + re:replace(Str, "\\bEMQ X\\b", "EMQX", [{return,list}]). diff --git a/src/emqx_relup.erl b/src/emqx_relup.erl index dc453e7ff..33501b8cf 100644 --- a/src/emqx_relup.erl +++ b/src/emqx_relup.erl @@ -33,6 +33,7 @@ post_release_upgrade(FromRelVsn, _) -> ?INFO("emqx has been upgraded from ~s to ~s!", [FromRelVsn, CurrRelVsn]), maybe_refresh_jwt_module(FromRelVsn), _ = maybe_restart_oracle_resources(FromRelVsn), + _ = maybe_start_schema_registry(FromRelVsn), reload_components(). %% What to do after downgraded to an old release vsn. @@ -98,17 +99,9 @@ maybe_refresh_jwt_module(_) -> -ifdef(EMQX_ENTERPRISE). maybe_restart_oracle_resources("4.4." ++ PatchVsn0) -> - try - case list_to_integer(PatchVsn0) of - PatchVsn when PatchVsn =< 14 -> - emqx_rule_engine:start_all_resources_of_type(backend_oracle); - _ -> ok - end - catch - Err:Reason:ST -> - ?INFO("maybe_restart_oracle_resources failed: ~p", [{Err, Reason, ST}]), - ok - end; + do_when_vsn_lte(PatchVsn0, 14, ?FUNCTION_NAME, fun() -> + emqx_rule_engine:start_all_resources_of_type(backend_oracle) + end); maybe_restart_oracle_resources(_) -> ok. @@ -118,3 +111,30 @@ maybe_restart_oracle_resources(_) -> ok. -endif. + +-ifdef(EMQX_ENTERPRISE). +maybe_start_schema_registry("4.4." ++ PatchVsn0) -> + do_when_vsn_lte(PatchVsn0, 15, ?FUNCTION_NAME, fun() -> + emqx_plugins:load(emqx_schema_registry) + end); +maybe_start_schema_registry(_) -> + ok. +-else. +maybe_start_schema_registry(_) -> + ok. +-endif. + +do_when_vsn_lte(SrcVsnStr, TargetVsn, ActionName, Action) -> + try + case list_to_integer(SrcVsnStr) of + Vsn when Vsn =< TargetVsn -> + ?INFO("doing ~p", [ActionName]), + _ = Action(), + ok; + _ -> ok + end + catch + Err:Reason:ST -> + ?INFO("~p failed: ~p", [ActionName, {Err, Reason, ST}]), + ok + end.