diff --git a/etc/emqx.conf b/etc/emqx.conf index ea90b8d28..c3aa177cc 100644 --- a/etc/emqx.conf +++ b/etc/emqx.conf @@ -544,6 +544,12 @@ zone.external.enable_acl = on ## Value: on | off zone.external.enable_stats = on +## Force MQTT connection/session process GC after this number of +## messages | bytes passed through. +## +## Numbers delimited by `|'. Zero or negative is to disable. +zone.external.force_gc_policy = 1000|1MB + ## Maximum MQTT packet size allowed. ## ## Value: Bytes diff --git a/priv/emqx.schema b/priv/emqx.schema index 04ce8f076..32e006ffa 100644 --- a/priv/emqx.schema +++ b/priv/emqx.schema @@ -852,8 +852,13 @@ end}. {mqtt_shared_subscription, Val}; ("force_gc_policy", Val) -> [Count, Bytes] = string:tokens(Val, "| "), - {force_gc_policy, #{count => list_to_integer(Count), - bytes => list_to_integer(Bytes)}}; + GcPolicy = case cuttlefish_bytesize:parse(Bytes) of + {error, Reason} -> + error(Reason); + Bytes1 -> + #{bytes => Bytes1, count => list_to_integer(Count)} + end, + {force_gc_policy, GcPolicy}; ("force_shutdown_policy", Val) -> [Len, Siz] = string:tokens(Val, "| "), ShutdownPolicy = case cuttlefish_bytesize:parse(Siz) of diff --git a/src/emqx_gc.erl b/src/emqx_gc.erl index 65bbccad1..7e98eb37a 100644 --- a/src/emqx_gc.erl +++ b/src/emqx_gc.erl @@ -21,8 +21,6 @@ -module(emqx_gc). --author("Feng Lee "). - -export([init/1, inc/2, reset/0]). -type st() :: #{ cnt => {integer(), integer()}