fix: remove nonexistent listener should always return ok

This commit is contained in:
Zhongwen Deng 2022-06-16 11:33:24 +08:00
parent c6271de174
commit 634a75341a
3 changed files with 8 additions and 4 deletions

View File

@ -381,7 +381,7 @@ post_config_update([listeners, Type, Name], {update, _Request}, NewConf, OldConf
_ -> ok _ -> ok
end; end;
post_config_update([listeners, _Type, _Name], '$remove', undefined, undefined, _AppEnvs) -> post_config_update([listeners, _Type, _Name], '$remove', undefined, undefined, _AppEnvs) ->
{error, not_found}; ok;
post_config_update([listeners, Type, Name], '$remove', undefined, OldConf, _AppEnvs) -> post_config_update([listeners, Type, Name], '$remove', undefined, OldConf, _AppEnvs) ->
case stop_listener(Type, Name, OldConf) of case stop_listener(Type, Name, OldConf) of
ok -> ok ->

View File

@ -355,9 +355,8 @@ crud_listeners_by_id(post, #{bindings := #{id := Id}, body := Body0}) ->
end; end;
crud_listeners_by_id(delete, #{bindings := #{id := Id}}) -> crud_listeners_by_id(delete, #{bindings := #{id := Id}}) ->
{ok, #{type := Type, name := Name}} = emqx_listeners:parse_listener_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}; {ok, _} -> {204};
{error, not_found} -> {204};
{error, Reason} -> {400, #{code => 'BAD_REQUEST', message => err_msg(Reason)}} {error, Reason} -> {400, #{code => 'BAD_REQUEST', message => err_msg(Reason)}}
end. end.
@ -552,7 +551,7 @@ action(Path, Action, Conf) ->
create(Path, Conf) -> create(Path, Conf) ->
wrap(emqx_conf:update(Path, {create, Conf}, ?OPTS(cluster))). wrap(emqx_conf:update(Path, {create, Conf}, ?OPTS(cluster))).
remove(Path) -> ensure_remove(Path) ->
wrap(emqx_conf:remove(Path, ?OPTS(cluster))). wrap(emqx_conf:remove(Path, ?OPTS(cluster))).
wrap({error, {post_config_update, emqx_listeners, Reason}}) -> {error, Reason}; wrap({error, {post_config_update, emqx_listeners, Reason}}) -> {error, Reason};

View File

@ -166,6 +166,11 @@ crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type) ->
?assertEqual([], delete(NewPath)), ?assertEqual([], delete(NewPath)),
ok. ok.
t_delete_nonexistent_listener(_) ->
NonExist = emqx_mgmt_api_test_util:api_path(["listeners", "tcp:nonexistent"]),
?assertEqual([], delete(NonExist)),
ok.
t_action_listeners(_) -> t_action_listeners(_) ->
ID = "tcp:default", ID = "tcp:default",
action_listener(ID, "stop", false), action_listener(ID, "stop", false),