From 634a75341a227a0e9b293362ff127b43ca68a3d7 Mon Sep 17 00:00:00 2001 From: Zhongwen Deng Date: Thu, 16 Jun 2022 11:33:24 +0800 Subject: [PATCH] fix: remove nonexistent listener should always return ok --- apps/emqx/src/emqx_listeners.erl | 2 +- apps/emqx_management/src/emqx_mgmt_api_listeners.erl | 5 ++--- apps/emqx_management/test/emqx_mgmt_api_listeners_SUITE.erl | 5 +++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/emqx/src/emqx_listeners.erl b/apps/emqx/src/emqx_listeners.erl index ae55f7968..062da5a72 100644 --- a/apps/emqx/src/emqx_listeners.erl +++ b/apps/emqx/src/emqx_listeners.erl @@ -381,7 +381,7 @@ post_config_update([listeners, Type, Name], {update, _Request}, NewConf, OldConf _ -> ok end; post_config_update([listeners, _Type, _Name], '$remove', undefined, undefined, _AppEnvs) -> - {error, not_found}; + ok; post_config_update([listeners, Type, Name], '$remove', undefined, OldConf, _AppEnvs) -> case stop_listener(Type, Name, OldConf) of ok -> diff --git a/apps/emqx_management/src/emqx_mgmt_api_listeners.erl b/apps/emqx_management/src/emqx_mgmt_api_listeners.erl index d158834ae..5ff76062f 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_listeners.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_listeners.erl @@ -355,9 +355,8 @@ crud_listeners_by_id(post, #{bindings := #{id := Id}, body := Body0}) -> end; crud_listeners_by_id(delete, #{bindings := #{id := Id}}) -> {ok, #{type := Type, name := Name}} = emqx_listeners:parse_listener_id(Id), - case remove([listeners, Type, Name]) of + case ensure_remove([listeners, Type, Name]) of {ok, _} -> {204}; - {error, not_found} -> {204}; {error, Reason} -> {400, #{code => 'BAD_REQUEST', message => err_msg(Reason)}} end. @@ -552,7 +551,7 @@ action(Path, Action, Conf) -> create(Path, Conf) -> wrap(emqx_conf:update(Path, {create, Conf}, ?OPTS(cluster))). -remove(Path) -> +ensure_remove(Path) -> wrap(emqx_conf:remove(Path, ?OPTS(cluster))). wrap({error, {post_config_update, emqx_listeners, Reason}}) -> {error, Reason}; diff --git a/apps/emqx_management/test/emqx_mgmt_api_listeners_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_listeners_SUITE.erl index 36fd69968..f72f9b762 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_listeners_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_listeners_SUITE.erl @@ -166,6 +166,11 @@ crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type) -> ?assertEqual([], delete(NewPath)), ok. +t_delete_nonexistent_listener(_) -> + NonExist = emqx_mgmt_api_test_util:api_path(["listeners", "tcp:nonexistent"]), + ?assertEqual([], delete(NonExist)), + ok. + t_action_listeners(_) -> ID = "tcp:default", action_listener(ID, "stop", false),