fix(statsd schema): a field is not 'required' when it has 'default'

This commit is contained in:
Zaiming (Stone) Shi 2022-12-29 23:00:24 +01:00
parent 981f75dc73
commit b30f2ea58b
2 changed files with 6 additions and 6 deletions

View File

@ -2369,7 +2369,11 @@ non_empty_string(_) -> {error, invalid_string}.
%% hosts can be successfully parsed.
%% 3. parsing: Done at runtime in each module which uses this config
servers_sc(Meta0, ParseOpts) ->
Required = maps:get(required, Meta0, true),
%% if this filed has a default value
%% then it is not NOT required
%% NOTE: maps:is_key is not the solution beause #{default => undefined} is legit
HasDefault = (maps:get(default, Meta0, undefined) =/= undefined),
Required = maps:get(required, Meta0, not HasDefault),
Meta = #{
required => Required,
converter => fun convert_servers/2,

View File

@ -41,7 +41,6 @@ fields("statsd") ->
boolean(),
#{
default => false,
required => true,
desc => ?DESC(enable)
}
)},
@ -56,25 +55,22 @@ desc(_) -> undefined.
server() ->
Meta = #{
required => true,
default => <<"127.0.0.1:8125">>,
desc => ?DESC(?FUNCTION_NAME)
},
emqx_schema:servers_sc(Meta, ?SERVER_PARSE_OPTS).
sample_interval(type) -> emqx_schema:duration_ms();
sample_interval(required) -> true;
sample_interval(default) -> "30s";
sample_interval(desc) -> ?DESC(?FUNCTION_NAME);
sample_interval(_) -> undefined.
flush_interval(type) -> emqx_schema:duration_ms();
flush_interval(required) -> true;
flush_interval(default) -> "30s";
flush_interval(desc) -> ?DESC(?FUNCTION_NAME);
flush_interval(_) -> undefined.
tags(type) -> map();
tags(required) -> false;
tags(default) -> #{};
tags(desc) -> ?DESC(?FUNCTION_NAME);
tags(_) -> undefined.