Merge pull request #13434 from zmstone/0704-refine-rpc-config

0704 refine rpc config
This commit is contained in:
zmstone 2024-07-11 10:25:45 +02:00 committed by GitHub
commit 7664b06e98
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 31 additions and 39 deletions

View File

@ -137,7 +137,7 @@ maybe_badrpc(Delivery) ->
Delivery. Delivery.
max_client_num() -> max_client_num() ->
emqx:get_config([rpc, tcp_client_num], ?DefaultClientNum). emqx:get_config([rpc, client_num], ?DefaultClientNum).
-spec unwrap_erpc(emqx_rpc:erpc(A) | [emqx_rpc:erpc(A)]) -> A | {error, _Err} | list(). -spec unwrap_erpc(emqx_rpc:erpc(A) | [emqx_rpc:erpc(A)]) -> A | {error, _Err} | list().
unwrap_erpc(Res) when is_list(Res) -> unwrap_erpc(Res) when is_list(Res) ->

View File

@ -86,6 +86,8 @@
external_broker_crashed external_broker_crashed
]). ]).
-define(DEFAULT_RPC_PORT, 5369).
%% Callback to upgrade config after loaded from config file but before validation. %% Callback to upgrade config after loaded from config file but before validation.
upgrade_raw_conf(Raw0) -> upgrade_raw_conf(Raw0) ->
Raw1 = emqx_connector_schema:transform_bridges_v1_to_connectors_and_bridges_v2(Raw0), Raw1 = emqx_connector_schema:transform_bridges_v1_to_connectors_and_bridges_v2(Raw0),
@ -756,30 +758,22 @@ fields("rpc") ->
desc => ?DESC(rpc_port_discovery) desc => ?DESC(rpc_port_discovery)
} }
)}, )},
{"tcp_server_port", {"server_port",
sc( sc(
integer(), pos_integer(),
#{ #{
mapping => "gen_rpc.tcp_server_port", aliases => [tcp_server_port, ssl_server_port],
default => 5369, default => ?DEFAULT_RPC_PORT,
desc => ?DESC(rpc_tcp_server_port) desc => ?DESC(rpc_server_port)
} }
)}, )},
{"ssl_server_port", {"client_num",
sc(
integer(),
#{
mapping => "gen_rpc.ssl_server_port",
default => 5369,
desc => ?DESC(rpc_ssl_server_port)
}
)},
{"tcp_client_num",
sc( sc(
range(1, 256), range(1, 256),
#{ #{
aliases => [tcp_client_num],
default => 10, default => 10,
desc => ?DESC(rpc_tcp_client_num) desc => ?DESC(rpc_client_num)
} }
)}, )},
{"connect_timeout", {"connect_timeout",
@ -1139,8 +1133,10 @@ translation("emqx") ->
translation("gen_rpc") -> translation("gen_rpc") ->
[ [
{"default_client_driver", fun tr_gen_rpc_default_client_driver/1}, {"default_client_driver", fun tr_gen_rpc_default_client_driver/1},
{"tcp_client_port", fun tr_gen_rpc_tcp_client_port/1}, {"tcp_server_port", fun tr_gen_rpc_port/1},
{"ssl_client_port", fun tr_gen_rpc_ssl_client_port/1}, {"ssl_server_port", fun tr_gen_rpc_port/1},
{"tcp_client_port", fun tr_gen_rpc_port/1},
{"ssl_client_port", fun tr_gen_rpc_port/1},
{"ssl_client_options", fun tr_gen_rpc_ssl_options/1}, {"ssl_client_options", fun tr_gen_rpc_ssl_options/1},
{"ssl_server_options", fun tr_gen_rpc_ssl_options/1}, {"ssl_server_options", fun tr_gen_rpc_ssl_options/1},
{"socket_ip", fun(Conf) -> {"socket_ip", fun(Conf) ->
@ -1224,11 +1220,8 @@ collector_enabled(disabled, _) -> [].
tr_gen_rpc_default_client_driver(Conf) -> tr_gen_rpc_default_client_driver(Conf) ->
conf_get("rpc.protocol", Conf). conf_get("rpc.protocol", Conf).
tr_gen_rpc_tcp_client_port(Conf) -> tr_gen_rpc_port(Conf) ->
conf_get("rpc.tcp_server_port", Conf). conf_get("rpc.server_port", Conf).
tr_gen_rpc_ssl_client_port(Conf) ->
conf_get("rpc.ssl_server_port", Conf).
tr_gen_rpc_ssl_options(Conf) -> tr_gen_rpc_ssl_options(Conf) ->
Ciphers = conf_get("rpc.ciphers", Conf), Ciphers = conf_get("rpc.ciphers", Conf),

6
changes/feat-13434.en.md Normal file
View File

@ -0,0 +1,6 @@
Simplified `rpc` configs.
- New config `rpc.server_port` is added to replace `rpc.tcp_server_port` and `rpc.ssl_server_port`.
- `rpc.tcp_client_num` is renamed to `rpc.client_num` since this config is for both TCP and SSL.
The old config names are kept as aliases for backward compatibility.

View File

@ -132,10 +132,11 @@ node_name.label:
"""Node Name""" """Node Name"""
rpc_port_discovery.desc: rpc_port_discovery.desc:
"""<code>manual</code>: discover ports by <code>tcp_server_port</code>.<br/> """<code>manual</code>: discover ports by <code>server_port</code>.<br/>
<code>stateless</code>: discover ports in a stateless manner, using the following algorithm. <code>stateless</code>: discover ports in a stateless manner, using the following algorithm.
If node name is <code>emqxN@127.0.0.1</code>, where the N is an integer, If node name is <code>emqxN@127.0.0.1</code>, where the N is an integer,
then the listening port will be 5370 + N.""" then the listening port will be 5370 + N.
NOTE: when `port_discovery` is `manual`, `server_port` configuration has no effect."""
rpc_port_discovery.label: rpc_port_discovery.label:
"""RRC Port Discovery""" """RRC Port Discovery"""
@ -358,12 +359,12 @@ to <code>rlog</code>."""
db_role.label: db_role.label:
"""DB Role""" """DB Role"""
rpc_tcp_server_port.desc: rpc_server_port.desc:
"""Listening port used by RPC local service.<br/> """Listening port used by RPC local service.<br/>
Note that this config only takes effect when rpc.port_discovery is set to manual.""" Note that this config only takes effect when rpc.port_discovery is set to manual."""
rpc_tcp_server_port.label: rpc_server_port.label:
"""RPC TCP Server Port""" """RPC Server Port"""
desc_console_handler.desc: desc_console_handler.desc:
"""Log handler that prints log events to the EMQX console.""" """Log handler that prints log events to the EMQX console."""
@ -383,10 +384,10 @@ log_burst_limit_max_count.desc:
log_burst_limit_max_count.label: log_burst_limit_max_count.label:
"""Events Number""" """Events Number"""
rpc_tcp_client_num.desc: rpc_client_num.desc:
"""Set the maximum number of RPC communication channels initiated by this node to each remote node.""" """Set the maximum number of RPC communication channels initiated by this node to each remote node."""
rpc_tcp_client_num.label: rpc_client_num.label:
"""RPC TCP Client Num""" """RPC TCP Client Num"""
cluster_k8s_address_type.desc: cluster_k8s_address_type.desc:
@ -734,14 +735,6 @@ this is where to look."""
desc_rpc.label: desc_rpc.label:
"""RPC""" """RPC"""
rpc_ssl_server_port.desc:
"""Listening port used by RPC local service.<br/>
Note that this config only takes effect when rpc.port_discovery is set to manual
and <code>driver</code> is set to <code>ssl</code>."""
rpc_ssl_server_port.label:
"""RPC SSL Server Port"""
desc_cluster.desc: desc_cluster.desc:
"""EMQX nodes can form a cluster to scale up the total capacity.<br/> """EMQX nodes can form a cluster to scale up the total capacity.<br/>
Here holds the configs to instruct how individual nodes can discover each other.""" Here holds the configs to instruct how individual nodes can discover each other."""