diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.app.src b/apps/emqx_rule_engine/src/emqx_rule_engine.app.src index aebb73150..d3396ee0c 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.app.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.app.src @@ -1,6 +1,6 @@ {application, emqx_rule_engine, [{description, "EMQ X Rule Engine"}, - {vsn, "4.3.3"}, % strict semver, bump manually! + {vsn, "4.3.4"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_rule_engine_sup, emqx_rule_registry]}, {applications, [kernel,stdlib,rulesql,getopt]}, 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 01c07c124..02d87189e 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src @@ -1,5 +1,5 @@ %% -*-: erlang -*- -{"4.3.3", +{"4.3.4", [ {"4.3.0", [ {load_module, emqx_rule_funcs, brutal_purge, soft_purge, []} , {load_module, emqx_rule_engine, brutal_purge, soft_purge, []} @@ -14,6 +14,10 @@ {"4.3.2", [ {load_module, emqx_rule_registry, brutal_purge, soft_purge, []} , {apply, {emqx_stats, cancel_update, [rule_registery_stats]}} + , {load_module, emqx_rule_engine, brutal_purge, soft_purge, []} + ]}, + {"4.3.3", + [ {load_module, emqx_rule_engine, brutal_purge, soft_purge, []} ]}, {<<".*">>, []} ], @@ -32,6 +36,10 @@ {"4.3.2", [ {load_module, emqx_rule_registry, brutal_purge, soft_purge, []} , {apply, {emqx_stats, cancel_update, [rule_registery_stats]}} + , {load_module, emqx_rule_engine, brutal_purge, soft_purge, []} + ]}, + {"4.3.3", + [ {load_module, emqx_rule_engine, 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 c2ccf2c29..efb461527 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.erl @@ -383,8 +383,14 @@ refresh_resource(Type) when is_atom(Type) -> lists:foreach(fun refresh_resource/1, emqx_rule_registry:get_resources_by_type(Type)); -refresh_resource(#resource{id = ResId}) -> - emqx_rule_monitor:ensure_resource_retrier(ResId, ?T_RETRY). +refresh_resource(#resource{id = ResId, type = Type, config = Config}) -> + try + {ok, #resource_type{on_create = {M, F}}} = + emqx_rule_registry:find_resource_type(Type), + ok = emqx_rule_engine:init_resource(M, F, ResId, Config) + catch _:_ -> + emqx_rule_monitor:ensure_resource_retrier(ResId, ?T_RETRY) + end. -spec(refresh_rules() -> ok). refresh_rules() ->