Sfoglia il codice sorgente

Merge pull request #11014 from zhongwencool/flapping-detect-update

fix:update emqx_flapping process's state when update flapping_detect
zhongwencool 2 anni fa
parent
commit
c9bb47a98d
2 ha cambiato i file con 16 aggiunte e 4 eliminazioni
  1. 3 1
      apps/emqx/src/emqx_config.erl
  2. 13 3
      apps/emqx/test/emqx_flapping_SUITE.erl

+ 3 - 1
apps/emqx/src/emqx_config.erl

@@ -930,7 +930,9 @@ maybe_update_zone([RootName | T], RootValue, Value) when is_atom(RootName) ->
                 end,
                 end,
                 ExistingZones
                 ExistingZones
             ),
             ),
-            persistent_term:put(?PERSIS_KEY(?CONF, zones), NewZones)
+            ZonesKey = ?PERSIS_KEY(?CONF, zones),
+            persistent_term:put(ZonesKey, NewZones),
+            put_config_post_change_actions(ZonesKey, NewZones)
     end,
     end,
     NewRootValue.
     NewRootValue.
 
 

+ 13 - 3
apps/emqx/test/emqx_flapping_SUITE.erl

@@ -138,22 +138,32 @@ t_conf_update(_) ->
 
 
 t_conf_update_timer(_Config) ->
 t_conf_update_timer(_Config) ->
     _ = emqx_flapping:start_link(),
     _ = emqx_flapping:start_link(),
-    validate_timer([default]),
+    validate_timer([{default, true}]),
+    %% change zones
     {ok, _} =
     {ok, _} =
         emqx:update_config([zones], #{
         emqx:update_config([zones], #{
             <<"timer_1">> => #{<<"flapping_detect">> => #{<<"enable">> => true}},
             <<"timer_1">> => #{<<"flapping_detect">> => #{<<"enable">> => true}},
             <<"timer_2">> => #{<<"flapping_detect">> => #{<<"enable">> => true}},
             <<"timer_2">> => #{<<"flapping_detect">> => #{<<"enable">> => true}},
             <<"timer_3">> => #{<<"flapping_detect">> => #{<<"enable">> => false}}
             <<"timer_3">> => #{<<"flapping_detect">> => #{<<"enable">> => false}}
         }),
         }),
-    validate_timer([timer_1, timer_2, timer_3, default]),
+    validate_timer([{timer_1, true}, {timer_2, true}, {timer_3, false}, {default, true}]),
+    %% change global flapping_detect
+    Global = emqx:get_raw_config([flapping_detect]),
+    {ok, _} = emqx:update_config([flapping_detect], Global#{<<"enable">> => false}),
+    validate_timer([{timer_1, true}, {timer_2, true}, {timer_3, false}, {default, false}]),
+    %% reset
+    {ok, _} = emqx:update_config([flapping_detect], Global#{<<"enable">> => true}),
+    validate_timer([{timer_1, true}, {timer_2, true}, {timer_3, false}, {default, true}]),
     ok.
     ok.
 
 
-validate_timer(Names) ->
+validate_timer(Lists) ->
+    {Names, _} = lists:unzip(Lists),
     Zones = emqx:get_config([zones]),
     Zones = emqx:get_config([zones]),
     ?assertEqual(lists:sort(Names), lists:sort(maps:keys(Zones))),
     ?assertEqual(lists:sort(Names), lists:sort(maps:keys(Zones))),
     Timers = sys:get_state(emqx_flapping),
     Timers = sys:get_state(emqx_flapping),
     maps:foreach(
     maps:foreach(
         fun(Name, #{flapping_detect := #{enable := Enable}}) ->
         fun(Name, #{flapping_detect := #{enable := Enable}}) ->
+            ?assertEqual(lists:keyfind(Name, 1, Lists), {Name, Enable}),
             ?assertEqual(Enable, is_reference(maps:get(Name, Timers)), Timers)
             ?assertEqual(Enable, is_reference(maps:get(Name, Timers)), Timers)
         end,
         end,
         Zones
         Zones