From 17a0513962beb47757d9e27c1d8779281bfa1cbd Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 16 Feb 2024 12:24:57 +0100 Subject: [PATCH 1/2] docs: add a reference to the origin of is_bridge and bridge_mode --- apps/emqx/src/emqx_channel.erl | 2 ++ apps/emqx/src/emqx_frame.erl | 2 ++ 2 files changed, 4 insertions(+) diff --git a/apps/emqx/src/emqx_channel.erl b/apps/emqx/src/emqx_channel.erl index 2ffe880f3..130ec99c8 100644 --- a/apps/emqx/src/emqx_channel.erl +++ b/apps/emqx/src/emqx_channel.erl @@ -1551,6 +1551,8 @@ set_username( set_username(_ConnPkt, ClientInfo) -> {ok, ClientInfo}. +%% The `is_bridge` bit flag in CONNECT packet (parsed as `bridge_mode`) +%% is invented by mosquitto, named 'try_private': https://mosquitto.org/man/mosquitto-conf-5.html set_bridge_mode(#mqtt_packet_connect{is_bridge = true}, ClientInfo) -> {ok, ClientInfo#{is_bridge => true}}; set_bridge_mode(_ConnPkt, _ClientInfo) -> diff --git a/apps/emqx/src/emqx_frame.erl b/apps/emqx/src/emqx_frame.erl index 0799a24ee..22170b6de 100644 --- a/apps/emqx/src/emqx_frame.erl +++ b/apps/emqx/src/emqx_frame.erl @@ -301,6 +301,7 @@ parse_connect2( proto_name = ProtoName, proto_ver = ProtoVer, %% For bridge mode, non-standard implementation + %% Invented by mosquitto, named 'try_private': https://mosquitto.org/man/mosquitto-conf-5.html is_bridge = (BridgeTag =:= 8), clean_start = bool(CleanStart), will_flag = bool(WillFlag), @@ -772,6 +773,7 @@ serialize_variable( proto_name = ProtoName, proto_ver = ProtoVer, %% For bridge mode, non-standard implementation + %% Invented by mosquitto, named 'try_private': https://mosquitto.org/man/mosquitto-conf-5.html is_bridge = IsBridge, clean_start = CleanStart, will_flag = WillFlag, From f78c30c9ff26414a63962cf52b529dec65e24309 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 16 Feb 2024 13:49:05 +0100 Subject: [PATCH 2/2] test: reduce false warning messages in test logs --- apps/emqx/src/emqx_config_handler.erl | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/emqx/src/emqx_config_handler.erl b/apps/emqx/src/emqx_config_handler.erl index 4cc5b2908..c20a74a5b 100644 --- a/apps/emqx/src/emqx_config_handler.erl +++ b/apps/emqx/src/emqx_config_handler.erl @@ -675,9 +675,19 @@ merge_to_override_config(RawConf, Opts) -> maps:merge(UpgradedOldConf, RawConf). upgrade_conf(Conf) -> + ConfigLoader = emqx_app:get_config_loader(), + %% ensure module loaded + _ = ConfigLoader:module_info(), + case erlang:function_exported(ConfigLoader, schema_module, 0) of + true -> + try_upgrade_conf(apply(ConfigLoader, schema_module, []), Conf); + false -> + %% this happens during emqx app standalone test + Conf + end. + +try_upgrade_conf(SchemaModule, Conf) -> try - ConfLoader = emqx_app:get_config_loader(), - SchemaModule = apply(ConfLoader, schema_module, []), apply(SchemaModule, upgrade_raw_conf, [Conf]) catch ErrorType:Reason:Stack ->