Fix bad config type of long_gc (#2504)

This commit is contained in:
tigercl 2019-05-08 10:19:49 +08:00 committed by GitHub
parent 7b356e80f4
commit 7e0ac5bd34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 15 deletions

View File

@ -2222,19 +2222,43 @@ broker.route_batch_clean = off
## System Monitor ## System Monitor
##-------------------------------------------------------------------- ##--------------------------------------------------------------------
## Enable Long GC monitoring. ## Enable Long GC monitoring. Disable if the value is 0.
## Notice: don't enable the monitor in production for: ## Notice: don't enable the monitor in production for:
## https://github.com/erlang/otp/blob/feb45017da36be78d4c5784d758ede619fa7bfd3/erts/emulator/beam/erl_gc.c#L421 ## https://github.com/erlang/otp/blob/feb45017da36be78d4c5784d758ede619fa7bfd3/erts/emulator/beam/erl_gc.c#L421
## ##
## Value: true | false ## Value: Duration
sysmon.long_gc = false ## - h: hour
## - m: minute
## - s: second
## - ms: milliseconds
##
## Examples:
## - 2h: 2 hours
## - 30m: 30 minutes
## - 0.1s: 0.1 seconds
## - 100ms : 100 milliseconds
##
## Default: 0ms
sysmon.long_gc = 0
## Enable Long Schedule(ms) monitoring. ## Enable Long Schedule(ms) monitoring.
## ##
## See: http://erlang.org/doc/man/erlang.html#system_monitor-2 ## See: http://erlang.org/doc/man/erlang.html#system_monitor-2
## ##
## Value: Number ## Value: Duration
sysmon.long_schedule = 240 ## - h: hour
## - m: minute
## - s: second
## - ms: milliseconds
##
## Examples:
## - 2h: 2 hours
## - 30m: 30 minutes
## - 0.1s: 0.1 seconds
## - 100ms: 100 milliseconds
##
## Default: 0ms
sysmon.long_schedule = 240ms
## Enable Large Heap monitoring. ## Enable Large Heap monitoring.
## ##

View File

@ -2074,14 +2074,14 @@ end}.
%% @doc Long GC, don't monitor in production mode for: %% @doc Long GC, don't monitor in production mode for:
%% https://github.com/erlang/otp/blob/feb45017da36be78d4c5784d758ede619fa7bfd3/erts/emulator/beam/erl_gc.c#L421 %% https://github.com/erlang/otp/blob/feb45017da36be78d4c5784d758ede619fa7bfd3/erts/emulator/beam/erl_gc.c#L421
{mapping, "sysmon.long_gc", "emqx.sysmon", [ {mapping, "sysmon.long_gc", "emqx.sysmon", [
{default, false}, {default, 0},
{datatype, {enum, [true, false]}} {datatype, [integer, {duration, ms}]}
]}. ]}.
%% @doc Long Schedule(ms) %% @doc Long Schedule(ms)
{mapping, "sysmon.long_schedule", "emqx.sysmon", [ {mapping, "sysmon.long_schedule", "emqx.sysmon", [
{default, 1000}, {default, 240},
{datatype, integer} {datatype, [integer, {duration, ms}]}
]}. ]}.
%% @doc Large Heap %% @doc Large Heap

View File

@ -33,9 +33,9 @@
, code_change/3 , code_change/3
]). ]).
-type(option() :: {long_gc, false | pos_integer()} -type(option() :: {long_gc, non_neg_integer()}
| {long_schedule, false | pos_integer()} | {long_schedule, non_neg_integer()}
| {large_heap, pos_integer()} | {large_heap, non_neg_integer()}
| {busy_port, boolean()} | {busy_port, boolean()}
| {busy_dist_port, boolean()}). | {busy_dist_port, boolean()}).
@ -66,11 +66,11 @@ parse_opt(Opts) ->
parse_opt(Opts, []). parse_opt(Opts, []).
parse_opt([], Acc) -> parse_opt([], Acc) ->
Acc; Acc;
parse_opt([{long_gc, false}|Opts], Acc) -> parse_opt([{long_gc, 0}|Opts], Acc) ->
parse_opt(Opts, Acc); parse_opt(Opts, Acc);
parse_opt([{long_gc, Ms}|Opts], Acc) when is_integer(Ms) -> parse_opt([{long_gc, Ms}|Opts], Acc) when is_integer(Ms) ->
parse_opt(Opts, [{long_gc, Ms}|Acc]); parse_opt(Opts, [{long_gc, Ms}|Acc]);
parse_opt([{long_schedule, false}|Opts], Acc) -> parse_opt([{long_schedule, 0}|Opts], Acc) ->
parse_opt(Opts, Acc); parse_opt(Opts, Acc);
parse_opt([{long_schedule, Ms}|Opts], Acc) when is_integer(Ms) -> parse_opt([{long_schedule, Ms}|Opts], Acc) when is_integer(Ms) ->
parse_opt(Opts, [{long_schedule, Ms}|Acc]); parse_opt(Opts, [{long_schedule, Ms}|Acc]);
@ -177,4 +177,3 @@ safe_publish(Event, WarnMsg) ->
sysmon_msg(Topic, Payload) -> sysmon_msg(Topic, Payload) ->
Msg = emqx_message:make(?SYSMON, Topic, Payload), Msg = emqx_message:make(?SYSMON, Topic, Payload),
emqx_message:set_flag(sys, Msg). emqx_message:set_flag(sys, Msg).