fix(rule_engine): re-enable rules after resource started

This commit is contained in:
Shawn 2021-04-26 18:11:41 +08:00 committed by turtleDeng
parent 9fd43ef882
commit 3646e76a7a
1 changed files with 9 additions and 1 deletions

View File

@ -104,7 +104,8 @@ retry_loop(resource, ResId, Interval) ->
try try
{ok, #resource_type{on_create = {M, F}}} = {ok, #resource_type{on_create = {M, F}}} =
emqx_rule_registry:find_resource_type(Type), emqx_rule_registry:find_resource_type(Type),
emqx_rule_engine:init_resource(M, F, ResId, Config) ok = emqx_rule_engine:init_resource(M, F, ResId, Config),
enable_rules_of_resource(ResId)
catch catch
Err:Reason:ST -> Err:Reason:ST ->
?LOG(warning, "init_resource failed: ~p, ~0p", ?LOG(warning, "init_resource failed: ~p, ~0p",
@ -115,3 +116,10 @@ retry_loop(resource, ResId, Interval) ->
not_found -> not_found ->
ok ok
end. end.
enable_rules_of_resource(ResId) ->
lists:foreach(
fun (#rule{enabled = false} = Rule) ->
emqx_rule_registry:add_rule(Rule#rule{enabled = false});
(_) -> ok
end, emqx_rule_registry:find_rules_depends_on_resource(ResId)).