From 6ebf0d1bdd9b9f2effb2ec97cd419be713f02fbc Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Fri, 10 Nov 2023 12:41:04 +0100 Subject: [PATCH 1/3] fix: reflect bridge V1 upgrade in override configurations Fixes: https://emqx.atlassian.net/browse/EMQX-11353 --- apps/emqx/src/emqx_config_handler.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/emqx/src/emqx_config_handler.erl b/apps/emqx/src/emqx_config_handler.erl index d8c014b8e..cf1fb2b8d 100644 --- a/apps/emqx/src/emqx_config_handler.erl +++ b/apps/emqx/src/emqx_config_handler.erl @@ -662,14 +662,16 @@ remove_from_override_config(_BinKeyPath, #{persistent := false}) -> undefined; remove_from_override_config(BinKeyPath, Opts) -> OldConf = emqx_config:read_override_conf(Opts), - emqx_utils_maps:deep_remove(BinKeyPath, OldConf). + UpgradedOldConf = emqx_conf_schema:upgrade_raw_conf(OldConf), + emqx_utils_maps:deep_remove(BinKeyPath, UpgradedOldConf). %% apply new config on top of override config merge_to_override_config(_RawConf, #{persistent := false}) -> undefined; merge_to_override_config(RawConf, Opts) -> OldConf = emqx_config:read_override_conf(Opts), - maps:merge(OldConf, RawConf). + UpgradedOldConf = emqx_conf_schema:upgrade_raw_conf(OldConf), + maps:merge(UpgradedOldConf, RawConf). up_req({remove, _Opts}) -> '$remove'; up_req({{update, Req}, _Opts}) -> Req. From 5838568d5deadd8acb47d4f0ace36aad6ffef6df Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Mon, 13 Nov 2023 11:41:40 +0100 Subject: [PATCH 2/3] fix: hard coded call to schema module The user can configure the configuration loader and schema module so we should not hard code a call to the default schema module. --- apps/emqx/src/emqx_config_handler.erl | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/emqx/src/emqx_config_handler.erl b/apps/emqx/src/emqx_config_handler.erl index cf1fb2b8d..ad97583a0 100644 --- a/apps/emqx/src/emqx_config_handler.erl +++ b/apps/emqx/src/emqx_config_handler.erl @@ -662,7 +662,7 @@ remove_from_override_config(_BinKeyPath, #{persistent := false}) -> undefined; remove_from_override_config(BinKeyPath, Opts) -> OldConf = emqx_config:read_override_conf(Opts), - UpgradedOldConf = emqx_conf_schema:upgrade_raw_conf(OldConf), + UpgradedOldConf = upgrade_conf(OldConf), emqx_utils_maps:deep_remove(BinKeyPath, UpgradedOldConf). %% apply new config on top of override config @@ -670,9 +670,25 @@ merge_to_override_config(_RawConf, #{persistent := false}) -> undefined; merge_to_override_config(RawConf, Opts) -> OldConf = emqx_config:read_override_conf(Opts), - UpgradedOldConf = emqx_conf_schema:upgrade_raw_conf(OldConf), + UpgradedOldConf = upgrade_conf(OldConf), maps:merge(UpgradedOldConf, RawConf). +upgrade_conf(Conf) -> + try + ConfLoader = emqx_app:get_config_loader(), + SchemaModule = apply(ConfLoader, schema_module, []), + apply(SchemaModule, upgrade_raw_conf, [Conf]) + catch + ErrorType:Reason:Stack -> + ?SLOG(warning, #{ + msg => "Failed to upgrade override config", + error_type => ErrorType, + reason => Reason, + stacktrace => Stack + }), + Conf + end. + up_req({remove, _Opts}) -> '$remove'; up_req({{update, Req}, _Opts}) -> Req. From 26fc9ed89da2ab839665bfd3b05ed5b80508779d Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Mon, 13 Nov 2023 12:53:09 +0100 Subject: [PATCH 3/3] fix: log warning message after suggestion from @zmstone Co-authored-by: Zaiming (Stone) Shi --- apps/emqx/src/emqx_config_handler.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx/src/emqx_config_handler.erl b/apps/emqx/src/emqx_config_handler.erl index ad97583a0..05784feb7 100644 --- a/apps/emqx/src/emqx_config_handler.erl +++ b/apps/emqx/src/emqx_config_handler.erl @@ -681,7 +681,7 @@ upgrade_conf(Conf) -> catch ErrorType:Reason:Stack -> ?SLOG(warning, #{ - msg => "Failed to upgrade override config", + msg => "failed_to_upgrade_config", error_type => ErrorType, reason => Reason, stacktrace => Stack