fix(rule_engine): refresh rules and then re-enable it
This commit is contained in:
parent
6557b132a2
commit
bea28d887c
|
@ -470,10 +470,10 @@ may_update_rule_params(Rule = #rule{enabled = OldEnb, actions = Actions, state =
|
|||
State = case {OldEnb, NewEnb} of
|
||||
{false, true} ->
|
||||
refresh_rule(Rule),
|
||||
force_enabled;
|
||||
force_changed;
|
||||
{true, false} ->
|
||||
clear_actions(Actions),
|
||||
force_disabled;
|
||||
force_changed;
|
||||
_NoChange -> OldState
|
||||
end,
|
||||
may_update_rule_params(Rule#rule{enabled = NewEnb, state = State}, maps:remove(enabled, Params));
|
||||
|
|
|
@ -105,7 +105,7 @@ retry_loop(resource, ResId, Interval) ->
|
|||
{ok, #resource_type{on_create = {M, F}}} =
|
||||
emqx_rule_registry:find_resource_type(Type),
|
||||
ok = emqx_rule_engine:init_resource(M, F, ResId, Config),
|
||||
enable_rules_of_resource(ResId)
|
||||
refresh_and_enable_rules_of_resource(ResId)
|
||||
catch
|
||||
Err:Reason:ST ->
|
||||
?LOG(warning, "init_resource failed: ~p, ~0p",
|
||||
|
@ -117,9 +117,11 @@ retry_loop(resource, ResId, Interval) ->
|
|||
ok
|
||||
end.
|
||||
|
||||
enable_rules_of_resource(ResId) ->
|
||||
refresh_and_enable_rules_of_resource(ResId) ->
|
||||
lists:foreach(
|
||||
fun (#rule{enabled = false, state = refresh_failed_at_bootup} = Rule) ->
|
||||
emqx_rule_registry:add_rule(Rule#rule{enabled = true, state = normal});
|
||||
fun (#rule{id = Id, enabled = false, state = refresh_failed_at_bootup} = Rule) ->
|
||||
emqx_rule_engine:refresh_rule(Rule),
|
||||
emqx_rule_registry:add_rule(Rule#rule{enabled = true, state = normal}),
|
||||
?LOG(info, "rule ~s is refreshed and re-enabled", [Id]);
|
||||
(_) -> ok
|
||||
end, emqx_rule_registry:find_rules_depends_on_resource(ResId)).
|
||||
|
|
Loading…
Reference in New Issue