From 6d83bc3e9bc650ea846edc39739a9ede17fe12b2 Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Wed, 24 Feb 2021 13:24:23 +0800 Subject: [PATCH] fix(rule): destroy the actions when disabling the rule (#4232) Merge the following PR from enterprise version: https://github.com/emqx/emqx-rule-engine/pull/231 --- apps/emqx_rule_engine/src/emqx_rule_engine.erl | 11 ++++++++--- apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.erl b/apps/emqx_rule_engine/src/emqx_rule_engine.erl index 3621a2442..02781ca9b 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.erl @@ -468,9 +468,14 @@ may_update_rule_params(Rule, Params = #{rawsql := SQL}) -> maps:remove(rawsql, Params)); Reason -> throw(Reason) end; -may_update_rule_params(Rule, Params = #{enabled := Enabled}) -> - Enabled andalso refresh_rule(Rule), - may_update_rule_params(Rule#rule{enabled = Enabled}, maps:remove(enabled, Params)); +may_update_rule_params(Rule = #rule{enabled = OldE, actions = Actions}, + Params = #{enabled := ToE}) -> + case {OldE, ToE} of + {false, true} -> refresh_rule(Rule); + {true, false} -> clear_actions(Actions); + _ -> ok + end, + may_update_rule_params(Rule#rule{enabled = ToE}, maps:remove(enabled, Params)); may_update_rule_params(Rule, Params = #{description := Descr}) -> may_update_rule_params(Rule#rule{description = Descr}, maps:remove(description, Params)); may_update_rule_params(Rule, Params = #{on_action_failed := OnFailed}) -> diff --git a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl index cc45f3a3b..456438b6d 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl @@ -77,6 +77,7 @@ groups() -> t_add_get_remove_rules, t_create_existing_rule, t_update_rule, + t_disable_rule, t_get_rules_for, t_get_rules_for_2, t_get_rules_with_same_event,