Merge pull request #11911 from lafirest/fix/limiter_doc

fix(limiter): simplify the descriptions for fields of the limiter
This commit is contained in:
lafirest 2023-11-09 21:03:27 +08:00 committed by GitHub
commit 92e978e50e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 143 deletions

View File

@ -33,7 +33,7 @@
desc/1, desc/1,
types/0, types/0,
short_paths/0, short_paths/0,
short_paths_fields/1 short_paths_fields/0
]). ]).
-define(KILOBYTE, 1024). -define(KILOBYTE, 1024).
@ -103,11 +103,11 @@ roots() ->
]. ].
fields(limiter) -> fields(limiter) ->
short_paths_fields(?MODULE, ?IMPORTANCE_HIDDEN) ++ short_paths_fields(?IMPORTANCE_HIDDEN) ++
[ [
{Type, {Type,
?HOCON(?R_REF(node_opts), #{ ?HOCON(?R_REF(node_opts), #{
desc => ?DESC(Type), desc => deprecated_desc(Type),
importance => ?IMPORTANCE_HIDDEN, importance => ?IMPORTANCE_HIDDEN,
required => {false, recursively}, required => {false, recursively},
aliases => alias_of_type(Type) aliases => alias_of_type(Type)
@ -120,7 +120,7 @@ fields(limiter) ->
?HOCON( ?HOCON(
?R_REF(client_fields), ?R_REF(client_fields),
#{ #{
desc => ?DESC(client), desc => deprecated_desc(client),
importance => ?IMPORTANCE_HIDDEN, importance => ?IMPORTANCE_HIDDEN,
required => {false, recursively}, required => {false, recursively},
deprecated => {since, "5.0.25"} deprecated => {since, "5.0.25"}
@ -129,10 +129,10 @@ fields(limiter) ->
]; ];
fields(node_opts) -> fields(node_opts) ->
[ [
{rate, ?HOCON(rate(), #{desc => ?DESC(rate), default => <<"infinity">>})}, {rate, ?HOCON(rate(), #{desc => deprecated_desc(rate), default => <<"infinity">>})},
{burst, {burst,
?HOCON(burst_rate(), #{ ?HOCON(burst_rate(), #{
desc => ?DESC(burst), desc => deprecated_desc(burst),
default => <<"0">> default => <<"0">>
})} })}
]; ];
@ -142,11 +142,12 @@ fields(bucket_opts) ->
fields_of_bucket(<<"infinity">>); fields_of_bucket(<<"infinity">>);
fields(client_opts) -> fields(client_opts) ->
[ [
{rate, ?HOCON(rate(), #{default => <<"infinity">>, desc => ?DESC(rate)})}, {rate, ?HOCON(rate(), #{default => <<"infinity">>, desc => deprecated_desc(rate)})},
{initial, {initial,
?HOCON(initial(), #{ ?HOCON(initial(), #{
default => <<"0">>, default => <<"0">>,
desc => ?DESC(initial),
desc => deprecated_desc(initial),
importance => ?IMPORTANCE_HIDDEN importance => ?IMPORTANCE_HIDDEN
})}, })},
%% low_watermark add for emqx_channel and emqx_session %% low_watermark add for emqx_channel and emqx_session
@ -157,14 +158,14 @@ fields(client_opts) ->
?HOCON( ?HOCON(
initial(), initial(),
#{ #{
desc => ?DESC(low_watermark), desc => deprecated_desc(low_watermark),
default => <<"0">>, default => <<"0">>,
importance => ?IMPORTANCE_HIDDEN importance => ?IMPORTANCE_HIDDEN
} }
)}, )},
{burst, {burst,
?HOCON(burst(), #{ ?HOCON(burst(), #{
desc => ?DESC(burst), desc => deprecated_desc(burst),
default => <<"0">>, default => <<"0">>,
importance => ?IMPORTANCE_HIDDEN, importance => ?IMPORTANCE_HIDDEN,
aliases => [capacity] aliases => [capacity]
@ -173,7 +174,7 @@ fields(client_opts) ->
?HOCON( ?HOCON(
boolean(), boolean(),
#{ #{
desc => ?DESC(divisible), desc => deprecated_desc(divisible),
default => true, default => true,
importance => ?IMPORTANCE_HIDDEN importance => ?IMPORTANCE_HIDDEN
} }
@ -182,7 +183,7 @@ fields(client_opts) ->
?HOCON( ?HOCON(
emqx_schema:timeout_duration(), emqx_schema:timeout_duration(),
#{ #{
desc => ?DESC(max_retry_time), desc => deprecated_desc(max_retry_time),
default => <<"1h">>, default => <<"1h">>,
importance => ?IMPORTANCE_HIDDEN importance => ?IMPORTANCE_HIDDEN
} }
@ -191,7 +192,7 @@ fields(client_opts) ->
?HOCON( ?HOCON(
failure_strategy(), failure_strategy(),
#{ #{
desc => ?DESC(failure_strategy), desc => deprecated_desc(failure_strategy),
default => force, default => force,
importance => ?IMPORTANCE_HIDDEN importance => ?IMPORTANCE_HIDDEN
} }
@ -204,14 +205,14 @@ fields(listener_client_fields) ->
fields(Type) -> fields(Type) ->
simple_bucket_field(Type). simple_bucket_field(Type).
short_paths_fields(DesModule) -> short_paths_fields() ->
short_paths_fields(DesModule, ?DEFAULT_IMPORTANCE). short_paths_fields(?DEFAULT_IMPORTANCE).
short_paths_fields(DesModule, Importance) -> short_paths_fields(Importance) ->
[ [
{Name, {Name,
?HOCON(rate(), #{ ?HOCON(rate(), #{
desc => ?DESC(DesModule, Name), desc => ?DESC(Name),
required => false, required => false,
importance => Importance, importance => Importance,
example => Example example => Example
@ -381,7 +382,7 @@ simple_bucket_field(Type) when is_atom(Type) ->
?HOCON( ?HOCON(
?R_REF(?MODULE, client_opts), ?R_REF(?MODULE, client_opts),
#{ #{
desc => ?DESC(client), desc => deprecated_desc(client),
required => {false, recursively}, required => {false, recursively},
importance => importance_of_type(Type), importance => importance_of_type(Type),
aliases => alias_of_type(Type) aliases => alias_of_type(Type)
@ -394,7 +395,7 @@ composite_bucket_fields(Types, ClientRef) ->
[ [
{Type, {Type,
?HOCON(?R_REF(?MODULE, bucket_opts), #{ ?HOCON(?R_REF(?MODULE, bucket_opts), #{
desc => ?DESC(?MODULE, Type), desc => deprecated_desc(Type),
required => {false, recursively}, required => {false, recursively},
importance => importance_of_type(Type), importance => importance_of_type(Type),
aliases => alias_of_type(Type) aliases => alias_of_type(Type)
@ -406,7 +407,7 @@ composite_bucket_fields(Types, ClientRef) ->
?HOCON( ?HOCON(
?R_REF(?MODULE, ClientRef), ?R_REF(?MODULE, ClientRef),
#{ #{
desc => ?DESC(client), desc => deprecated_desc(client),
required => {false, recursively} required => {false, recursively}
} }
)} )}
@ -414,10 +415,10 @@ composite_bucket_fields(Types, ClientRef) ->
fields_of_bucket(Default) -> fields_of_bucket(Default) ->
[ [
{rate, ?HOCON(rate(), #{desc => ?DESC(rate), default => Default})}, {rate, ?HOCON(rate(), #{desc => deprecated_desc(rate), default => Default})},
{burst, {burst,
?HOCON(burst(), #{ ?HOCON(burst(), #{
desc => ?DESC(burst), desc => deprecated_desc(burst),
default => <<"0">>, default => <<"0">>,
importance => ?IMPORTANCE_HIDDEN, importance => ?IMPORTANCE_HIDDEN,
aliases => [capacity] aliases => [capacity]
@ -425,7 +426,7 @@ fields_of_bucket(Default) ->
{initial, {initial,
?HOCON(initial(), #{ ?HOCON(initial(), #{
default => <<"0">>, default => <<"0">>,
desc => ?DESC(initial), desc => deprecated_desc(initial),
importance => ?IMPORTANCE_HIDDEN importance => ?IMPORTANCE_HIDDEN
})} })}
]. ].
@ -434,7 +435,7 @@ client_fields(Types) ->
[ [
{Type, {Type,
?HOCON(?R_REF(client_opts), #{ ?HOCON(?R_REF(client_opts), #{
desc => ?DESC(Type), desc => deprecated_desc(Type),
required => false, required => false,
importance => importance_of_type(Type), importance => importance_of_type(Type),
aliases => alias_of_type(Type) aliases => alias_of_type(Type)
@ -457,3 +458,6 @@ alias_of_type(bytes) ->
[bytes_in]; [bytes_in];
alias_of_type(_) -> alias_of_type(_) ->
[]. [].
deprecated_desc(_Field) ->
<<"Deprecated since v5.0.25">>.

View File

@ -1849,7 +1849,7 @@ base_listener(Bind) ->
default => true default => true
} }
)} )}
] ++ emqx_limiter_schema:short_paths_fields(?MODULE). ] ++ emqx_limiter_schema:short_paths_fields().
desc("persistent_session_store") -> desc("persistent_session_store") ->
"Settings for message persistence."; "Settings for message persistence.";

View File

@ -2,114 +2,33 @@ emqx_limiter_schema {
max_conn_rate.desc: max_conn_rate.desc:
"""Maximum connection rate.<br/> """Maximum connection rate.<br/>
This is used to limit the connection rate for this node, This is used to limit the connection rate for this node.
once the limit is reached, new connections will be deferred or refused""" Once the limit is reached, new connections will be deferred or refused.<br/>
For example:<br/>
- <code>1000/s</code> :: Only accepts 1000 connections per second<br/>
- <code>1000/10s</code> :: Only accepts 1000 connections every 10 seconds"""
max_conn_rate.label: max_conn_rate.label:
"""Maximum Connection Rate""" """Maximum Connection Rate"""
messages_rate.desc: messages_rate.desc:
"""Messages publish rate.<br/> """Messages publish rate.<br/>
This is used to limit the inbound message numbers for this node, This is used to limit the inbound message numbers for this node.
once the limit is reached, the restricted client will slow down and even be hung for a while.""" Once the limit is reached, the restricted client will slow down and even be hung for a while.<br/>
For example:<br/>
- <code>500/s</code> :: Only the first 500 messages are sent per second and other messages are buffered.<br/>
- <code>500/10s</code> :: Only the first 500 messages are sent even 10 second and other messages are buffered."""
messages_rate.label: messages_rate.label:
"""Messages Publish Rate""" """Messages Publish Rate"""
bytes_rate.desc: bytes_rate.desc:
"""Data publish rate.<br/> """Data publish rate.<br/>
This is used to limit the inbound bytes rate for this node, This is used to limit the inbound bytes rate for this node.
once the limit is reached, the restricted client will slow down and even be hung for a while.""" Once the limit is reached, the restricted client will slow down and even be hung for a while.<br/>
The unit of the bytes could be:KB MB GB.<br/>
For example:<br/>
- <code>500KB/s</code> :: Only the first 500 kilobytes are sent per second and other messages are buffered.<br/>
- <code>500MB/10s</code> :: Only the first 500 megabytes are sent even 10 second and other messages are buffered."""
bytes_rate.label: bytes_rate.label:
"""Data Publish Rate""" """Data Publish Rate"""
bucket_cfg.desc:
"""Bucket Configs"""
bucket_cfg.label:
"""Buckets"""
burst.desc:
"""The burst, This value is based on rate.<br/>
This value + rate = the maximum limit that can be achieved when limiter burst."""
burst.label:
"""Burst"""
bytes.desc:
"""The `bytes` limiter.
This is used to limit the inbound bytes rate for this EMQX node.
Once the limit is reached, the restricted client will be slow down even be hung for a while."""
bytes.label:
"""Bytes"""
client.desc:
"""The rate limit for each user of the bucket"""
client.label:
"""Per Client"""
connection.desc:
"""The connection limiter.
This is used to limit the connection rate for this EMQX node.
Once the limit is reached, new connections will be refused"""
connection.label:
"""Connection"""
divisible.desc:
"""Is it possible to split the number of requested tokens?"""
divisible.label:
"""Divisible"""
failure_strategy.desc:
"""The strategy when all the retries failed."""
failure_strategy.label:
"""Failure Strategy"""
initial.desc:
"""The initial number of tokens for this bucket."""
initial.label:
"""Initial"""
internal.desc:
"""Limiter for EMQX internal app."""
low_watermark.desc:
"""If the remaining tokens are lower than this value,
the check/consume will succeed, but it will be forced to wait for a short period of time."""
low_watermark.label:
"""Low Watermark"""
max_retry_time.desc:
"""The maximum retry time when acquire failed."""
max_retry_time.label:
"""Max Retry Time"""
message_routing.desc:
"""The message routing limiter.
This is used to limit the forwarding rate for this EMQX node.
Once the limit is reached, new publish will be refused"""
message_routing.label:
"""Message Routing"""
messages.desc:
"""The `messages` limiter.
This is used to limit the inbound message numbers for this EMQX node
Once the limit is reached, the restricted client will be slow down even be hung for a while."""
messages.label:
"""Messages"""
rate.desc:
"""Rate for this bucket."""
rate.label:
"""Rate"""
} }

View File

@ -1039,27 +1039,6 @@ base_listener_limiter.desc:
base_listener_limiter.label: base_listener_limiter.label:
"""Type of the rate limit.""" """Type of the rate limit."""
max_conn_rate.desc:
"""Maximum connection rate.<br/>
This is used to limit the connection rate for this listener,
once the limit is reached, new connections will be deferred or refused"""
max_conn_rate.label:
"""Maximum Connection Rate"""
messages_rate.desc:
"""Messages publish rate.<br/>
This is used to limit the inbound message numbers for each client connected to this listener,
once the limit is reached, the restricted client will slow down and even be hung for a while."""
messages_rate.label:
"""Messages Publish Rate"""
bytes_rate.desc:
"""Data publish rate.<br/>
This is used to limit the inbound bytes rate for each client connected to this listener,
once the limit is reached, the restricted client will slow down and even be hung for a while."""
bytes_rate.label:
"""Data Publish Rate"""
persistent_session_store_backend.desc: persistent_session_store_backend.desc:
"""Database management system used to store information about persistent sessions and messages. """Database management system used to store information about persistent sessions and messages.
- `builtin`: Use the embedded database (mria)""" - `builtin`: Use the embedded database (mria)"""