From 6119632ded4f4d120e2e491bbfa0157dff63a6de Mon Sep 17 00:00:00 2001 From: zhouzb Date: Thu, 20 Aug 2020 10:39:16 +0800 Subject: [PATCH] fix(topic-metrics): fix the issue that the corresponding data is not properly cleaned up when unregistering --- src/emqx_mod_topic_metrics.erl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/emqx_mod_topic_metrics.erl b/src/emqx_mod_topic_metrics.erl index 4e9b44fa8..fceb4772d 100644 --- a/src/emqx_mod_topic_metrics.erl +++ b/src/emqx_mod_topic_metrics.erl @@ -237,7 +237,10 @@ handle_call({unregister, Topic}, _From, State = #state{speeds = Speeds}) -> {reply, ok, State}; true -> ok = delete_counters(Topic), - {reply, ok, State#state{speeds = maps:remove(Topic, Speeds)}} + NSpeeds = lists:foldl(fun(Metric, Acc) -> + maps:remove({Topic, Metric}, Acc) + end, Speeds, ?TOPIC_METRICS), + {reply, ok, State#state{speeds = NSpeeds}} end; handle_call({get_rate, Topic}, _From, State = #state{speeds = Speeds}) -> @@ -272,7 +275,7 @@ handle_info(ticking, State = #state{speeds = Speeds}) -> NSpeeds = maps:map( fun({Topic, Metric}, Speed) -> case val(Topic, Metric) of - {error, not_found} -> maps:remove(Topic, Speeds); + {error, not_found} -> maps:remove({Topic, Metric}, Speeds); Val -> calculate_speed(Val, Speed) end end, Speeds),