diff --git a/etc/emqx.conf b/etc/emqx.conf index 3604f2efd..635ccf68c 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 9fcd97376..47ad97293 100644 --- a/priv/emqx.schema +++ b/priv/emqx.schema @@ -828,7 +828,7 @@ end}. %% messages | bytes passed through. %% Numbers delimited by `|'. Zero or negative is to disable. {mapping, "zone.$name.force_gc_policy", "emqx.zones", [ - {default, "0|0"}, + {default, "0|0KB"}, {datatype, string} ]}. @@ -841,8 +841,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}; (Opt, Val) -> {list_to_atom(Opt), Val} end, 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()}