Просмотр исходного кода

Fix the flapping bug
Prior to this change, the banned until value will not be set
correctly because of wrong spell of config entry name .

This change fix this bug

GilbertWong 6 лет назад
Родитель
Сommit
bcae452e42
4 измененных файлов с 13 добавлено и 11 удалено
  1. 3 3
      rebar.config
  2. 1 2
      src/emqx_cm_sup.erl
  3. 8 5
      src/emqx_flapping.erl
  4. 1 1
      src/emqx_protocol.erl

+ 3 - 3
rebar.config

@@ -2,10 +2,10 @@
     [ {jsx, "2.9.0"} % hex
     , {cowboy, "2.6.1"} % hex
     , {gproc, "0.8.0"} % hex
+    , {ekka, "0.5.6"} % hex
+    , {replayq, "0.1.1"} %hex
+    , {esockd, "5.5.0"} %hex
     , {gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "2.3.1"}}}
-    , {ekka, {git, "https://github.com/emqx/ekka", {tag, "v0.5.5"}}}
-    , {replayq, {git, "https://github.com/emqx/replayq", {tag, "v0.1.1"}}}
-    , {esockd, "5.5.0"}
     , {cuttlefish, {git, "https://github.com/emqx/cuttlefish", {tag, "v3.0.0"}}}
     ]}.
 

+ 1 - 2
src/emqx_cm_sup.erl

@@ -30,9 +30,8 @@ init([]) ->
                shutdown => 1000,
                type => worker,
                modules => [emqx_banned]},
-    FlappingOption = emqx_config:get_env(flapping_clean_interval, 3600000),
     Flapping = #{id => flapping,
-                 start => {emqx_flapping, start_link, [FlappingOption]},
+                 start => {emqx_flapping, start_link, []},
                  restart => permanent,
                  shutdown => 1000,
                  type => worker,

+ 8 - 5
src/emqx_flapping.erl

@@ -19,7 +19,7 @@
 
 -behaviour(gen_statem).
 
--export([start_link/1]).
+-export([start_link/0]).
 
 %% This module is used to garbage clean the flapping records
 
@@ -33,6 +33,8 @@
 
 -define(FLAPPING_TAB, ?MODULE).
 
+-define(default_flapping_clean_interval, 3600000).
+
 -export([check/3]).
 
 -record(flapping,
@@ -96,11 +98,12 @@ check_flapping(Action, CheckCount, _Threshold = {TimesThreshold, TimeInterval},
 %%--------------------------------------------------------------------
 %% gen_statem callbacks
 %%--------------------------------------------------------------------
--spec(start_link(TimerInterval :: [integer()]) -> startlink_ret()).
-start_link(TimerInterval) ->
-    gen_statem:start_link({local, ?MODULE}, ?MODULE, [TimerInterval], []).
+-spec(start_link() -> startlink_ret()).
+start_link() ->
+    gen_statem:start_link({local, ?MODULE}, ?MODULE, [], []).
 
-init([TimerInterval]) ->
+init([]) ->
+    TimerInterval = emqx_config:get_env(flapping_clean_interval, ?default_flapping_clean_interval),
     TabOpts = [ public
               , set
               , {keypos, 2}

+ 1 - 1
src/emqx_protocol.erl

@@ -963,7 +963,7 @@ do_flapping_detect(Action, #pstate{zone = Zone,
                  Threshold = emqx_zone:get_env(Zone, flapping_threshold, {10, 60}),
                  case emqx_flapping:check(Action, ClientId, Threshold) of
                      flapping ->
-                         BanExpiryInterval = emqx_zone:get_env(Zone, flapping_ban_expiry_interval, 3600000),
+                         BanExpiryInterval = emqx_zone:get_env(Zone, flapping_banned_expiry_interval, 3600000),
                          Until = erlang:system_time(second) + BanExpiryInterval,
                          emqx_banned:add(#banned{who = {client_id, ClientId},
                                                  reason = <<"flapping">>,