From 8f18bdff15b83b8fcb0d96c2943e17510900038d Mon Sep 17 00:00:00 2001 From: DDDHuang <44492639+DDDHuang@users.noreply.github.com> Date: Wed, 13 Jul 2022 10:35:33 +0800 Subject: [PATCH] fix(api): topic metrics check exist before create --- apps/emqx_modules/src/emqx_modules.app.src | 2 +- apps/emqx_modules/src/emqx_topic_metrics_api.erl | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/emqx_modules/src/emqx_modules.app.src b/apps/emqx_modules/src/emqx_modules.app.src index 6565e6dfd..cd107d78c 100644 --- a/apps/emqx_modules/src/emqx_modules.app.src +++ b/apps/emqx_modules/src/emqx_modules.app.src @@ -1,7 +1,7 @@ %% -*- mode: erlang -*- {application, emqx_modules, [ {description, "EMQX Modules"}, - {vsn, "5.0.1"}, + {vsn, "5.0.2"}, {modules, []}, {applications, [kernel, stdlib, emqx]}, {mod, {emqx_modules_app, []}}, diff --git a/apps/emqx_modules/src/emqx_topic_metrics_api.erl b/apps/emqx_modules/src/emqx_topic_metrics_api.erl index 74a37b652..1fb9c3a7b 100644 --- a/apps/emqx_modules/src/emqx_topic_metrics_api.erl +++ b/apps/emqx_modules/src/emqx_topic_metrics_api.erl @@ -296,11 +296,16 @@ topic_metrics(put, #{body := #{<<"action">> := <<"reset">>}}) -> topic_metrics(post, #{body := #{<<"topic">> := <<>>}}) -> {400, 'BAD_REQUEST', <<"Topic can not be empty">>}; topic_metrics(post, #{body := #{<<"topic">> := Topic}}) -> - case emqx_modules_conf:add_topic_metrics(Topic) of - {ok, Topic} -> - get_cluster_response([Topic]); - {error, Reason} -> - reason2httpresp(Reason) + case lists:member(Topic, emqx_modules_conf:topic_metrics()) of + false -> + case emqx_modules_conf:add_topic_metrics(Topic) of + {ok, Topic} -> + get_cluster_response([Topic]); + {error, Reason} -> + reason2httpresp(Reason) + end; + true -> + reason2httpresp(already_existed) end. operate_topic_metrics(get, #{bindings := #{topic := Topic}}) ->