From 0559d6f6396630e3ad03afd6471ceac5dfaec7af Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Fri, 19 May 2023 16:39:03 -0300 Subject: [PATCH] refactor(buffer_worker): use static fn for bumping counters --- .../src/emqx_resource_buffer_worker.erl | 49 +++++++++++-------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/apps/emqx_resource/src/emqx_resource_buffer_worker.erl b/apps/emqx_resource/src/emqx_resource_buffer_worker.erl index 47769418b..35761822d 100644 --- a/apps/emqx_resource/src/emqx_resource_buffer_worker.erl +++ b/apps/emqx_resource/src/emqx_resource_buffer_worker.erl @@ -936,27 +936,34 @@ ensure_metrics_flush_timer(Data = #{metrics_tref := undefined, metrics_flush_int -spec bump_counters(id(), counters()) -> ok. bump_counters(Id, Counters) -> - maps:foreach( - fun - (dropped_expired, Val) -> - emqx_resource_metrics:dropped_expired_inc(Id, Val); - (dropped_queue_full, Val) -> - emqx_resource_metrics:dropped_queue_full_inc(Id, Val); - (failed, Val) -> - emqx_resource_metrics:failed_inc(Id, Val); - (retried_failed, Val) -> - emqx_resource_metrics:retried_failed_inc(Id, Val); - (success, Val) -> - emqx_resource_metrics:success_inc(Id, Val); - (retried_success, Val) -> - emqx_resource_metrics:retried_success_inc(Id, Val); - (dropped_resource_not_found, Val) -> - emqx_resource_metrics:dropped_resource_not_found_inc(Id, Val); - (dropped_resource_stopped, Val) -> - emqx_resource_metrics:dropped_resource_stopped_inc(Id, Val) - end, - Counters - ). + Iter = maps:iterator(Counters), + do_bump_counters(Iter, Id). + +do_bump_counters(Iter, Id) -> + case maps:next(Iter) of + {Key, Val, NIter} -> + do_bump_counters1(Key, Val, Id), + do_bump_counters(NIter, Id); + none -> + ok + end. + +do_bump_counters1(dropped_expired, Val, Id) -> + emqx_resource_metrics:dropped_expired_inc(Id, Val); +do_bump_counters1(dropped_queue_full, Val, Id) -> + emqx_resource_metrics:dropped_queue_full_inc(Id, Val); +do_bump_counters1(failed, Val, Id) -> + emqx_resource_metrics:failed_inc(Id, Val); +do_bump_counters1(retried_failed, Val, Id) -> + emqx_resource_metrics:retried_failed_inc(Id, Val); +do_bump_counters1(success, Val, Id) -> + emqx_resource_metrics:success_inc(Id, Val); +do_bump_counters1(retried_success, Val, Id) -> + emqx_resource_metrics:retried_success_inc(Id, Val); +do_bump_counters1(dropped_resource_not_found, Val, Id) -> + emqx_resource_metrics:dropped_resource_not_found_inc(Id, Val); +do_bump_counters1(dropped_resource_stopped, Val, Id) -> + emqx_resource_metrics:dropped_resource_stopped_inc(Id, Val). -spec set_gauges(data()) -> ok. set_gauges(_Data = #{id := Id, index := Index, queue := Q, inflight_tid := InflightTID}) ->