chore: port changes from e4.4 back to v4.4

This commit is contained in:
Shawn 2023-03-09 20:16:55 +08:00
parent 822ca2e26c
commit 5402ff7fd8
13 changed files with 114 additions and 51 deletions

View File

@ -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,[]},

View File

@ -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,

View File

@ -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,[]},

View File

@ -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]),

View File

@ -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,[]},

View File

@ -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]),

View File

@ -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,[]},

View File

@ -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}},

View File

@ -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,10 +322,12 @@ wait_action_on(Id, RetryN) ->
end.
handle_action_failure(continue, _Id, Fallbacks, Selected, Envs = #{metadata := Metadata}, 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) ->
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}}).

View File

@ -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,[]}]},

View File

@ -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]),

View File

@ -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}]).

View File

@ -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.