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}}) ->