fix(topic-metrics): fix the issue that the corresponding data is not properly cleaned up when unregistering

This commit is contained in:
zhouzb 2020-08-20 10:39:16 +08:00 committed by JianBo He
parent 8bcf15f391
commit 6119632ded
1 changed files with 5 additions and 2 deletions

View File

@ -237,7 +237,10 @@ handle_call({unregister, Topic}, _From, State = #state{speeds = Speeds}) ->
{reply, ok, State}; {reply, ok, State};
true -> true ->
ok = delete_counters(Topic), 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; end;
handle_call({get_rate, Topic}, _From, State = #state{speeds = Speeds}) -> handle_call({get_rate, Topic}, _From, State = #state{speeds = Speeds}) ->
@ -272,7 +275,7 @@ handle_info(ticking, State = #state{speeds = Speeds}) ->
NSpeeds = maps:map( NSpeeds = maps:map(
fun({Topic, Metric}, Speed) -> fun({Topic, Metric}, Speed) ->
case val(Topic, Metric) of 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) Val -> calculate_speed(Val, Speed)
end end
end, Speeds), end, Speeds),