diff --git a/apps/emqx_conf/src/emqx_conf_cli.erl b/apps/emqx_conf/src/emqx_conf_cli.erl index f2ced3327..b6ba0dfc9 100644 --- a/apps/emqx_conf/src/emqx_conf_cli.erl +++ b/apps/emqx_conf/src/emqx_conf_cli.erl @@ -35,7 +35,7 @@ -define(CLUSTER_CALL, cluster_call). -define(CONF, conf). -define(AUDIT_MOD, audit). --define(UPDATE_READONLY_KEYS_PROHIBITED, "update_readonly_keys_prohibited"). +-define(UPDATE_READONLY_KEYS_PROHIBITED, <<"update_readonly_keys_prohibited">>). -dialyzer({no_match, [load/0]}). diff --git a/apps/emqx_conf/test/emqx_conf_cli_SUITE.erl b/apps/emqx_conf/test/emqx_conf_cli_SUITE.erl index b3ecdd0cf..a3630e91d 100644 --- a/apps/emqx_conf/test/emqx_conf_cli_SUITE.erl +++ b/apps/emqx_conf/test/emqx_conf_cli_SUITE.erl @@ -165,7 +165,7 @@ t_load_readonly(Config) -> ConfBin0 = hocon_pp:do(Base1#{KeyBin => Conf}, #{}), ConfFile0 = prepare_conf_file(?FUNCTION_NAME, ConfBin0, Config), ?assertEqual( - {error, "update_readonly_keys_prohibited"}, + {error, <<"update_readonly_keys_prohibited">>}, emqx_conf_cli:conf(["load", ConfFile0]) ), %% reload etc/emqx.conf changed readonly keys diff --git a/apps/emqx_management/test/emqx_mgmt_api_configs_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_configs_SUITE.erl index 2bfff17a6..bb3ca87b7 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_configs_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_configs_SUITE.erl @@ -331,7 +331,7 @@ t_configs_key(_Config) -> Log ), Log1 = emqx_utils_maps:deep_put([<<"log">>, <<"console">>, <<"level">>], Log, <<"error">>), - ?assertEqual([], update_configs_with_binary(iolist_to_binary(hocon_pp:do(Log1, #{})))), + ?assertEqual(<<>>, update_configs_with_binary(iolist_to_binary(hocon_pp:do(Log1, #{})))), ?assertEqual(<<"error">>, read_conf([<<"log">>, <<"console">>, <<"level">>])), BadLog = emqx_utils_maps:deep_put([<<"log">>, <<"console">>, <<"level">>], Log, <<"erro1r">>), {error, Error} = update_configs_with_binary(iolist_to_binary(hocon_pp:do(BadLog, #{}))), @@ -345,6 +345,17 @@ t_configs_key(_Config) -> } }, ?assertEqual(ExpectError, emqx_utils_json:decode(Error, [return_maps])), + ReadOnlyConf = #{ + <<"cluster">> => + #{ + <<"autoclean">> => <<"23h">>, + <<"autoheal">> => true, + <<"discovery_strategy">> => <<"manual">> + } + }, + ReadOnlyBin = iolist_to_binary(hocon_pp:do(ReadOnlyConf, #{})), + {error, ReadOnlyError} = update_configs_with_binary(ReadOnlyBin), + ?assertEqual(<<"update_readonly_keys_prohibited">>, ReadOnlyError), ok. t_get_configs_in_different_accept(_Config) -> @@ -394,7 +405,7 @@ t_create_webhook_v1_bridges_api(Config) -> WebHookFile = filename:join(?config(data_dir, Config), "webhook_v1.conf"), ?assertMatch({ok, _}, hocon:files([WebHookFile])), {ok, WebHookBin} = file:read_file(WebHookFile), - ?assertEqual([], update_configs_with_binary(WebHookBin)), + ?assertEqual(<<>>, update_configs_with_binary(WebHookBin)), Actions = #{ <<"http">> => @@ -531,7 +542,7 @@ update_configs_with_binary(Bin) -> Path = emqx_mgmt_api_test_util:api_path(["configs"]), Auth = emqx_mgmt_api_test_util:auth_header_(), Headers = [{"accept", "text/plain"}, Auth], - case httpc:request(put, {Path, Headers, "text/plain", Bin}, [], []) of + case httpc:request(put, {Path, Headers, "text/plain", Bin}, [], [{body_format, binary}]) of {ok, {{"HTTP/1.1", Code, _}, _Headers, Body}} when Code >= 200 andalso Code =< 299 -> diff --git a/changes/ee/fix-12240.en.md b/changes/ee/fix-12240.en.md new file mode 100644 index 000000000..064eaa7c7 --- /dev/null +++ b/changes/ee/fix-12240.en.md @@ -0,0 +1 @@ +Modified the /file_transfer API to return the file transfer configuration in raw format rather than converting time units like "1h" to seconds, providing callers with the original configured values for consistency with other getter APIs diff --git a/changes/ee/fix-12249.en.md b/changes/ee/fix-12249.en.md new file mode 100644 index 000000000..9fe98cba3 --- /dev/null +++ b/changes/ee/fix-12249.en.md @@ -0,0 +1 @@ +Fixed issue where the response message from the /configs API would be garbled when attempting to update a read-only configuration value