@@ -79,17 +79,19 @@ parse_metrics(Metrics, Resource, #opts{order=Order} = Opts) ->
79
79
ParsedMetricsIter = maps :iterator (ParsedMetrics1 , Order ),
80
80
maps :fold (fun (_Name , #{preamble := Preamble , data := Data }, Acc ) -> [[Preamble | Data ] | Acc ] end , [], ParsedMetricsIter ).
81
81
82
+ parse_and_accumulate_metric (# metric {name = Name }, Acc , _Opts )
83
+ when is_map_key (Name , Acc ) ->
84
+ % % skip duplicate metric, can this even happen?
85
+ Acc ;
82
86
parse_and_accumulate_metric (# metric {name = Name , description = Description , data = Data , unit = Unit , scope = Scope }, Acc , Opts ) ->
83
87
FixedUnit = fix_unit (Unit ),
84
88
{MetricNameUnit , FullName } = fix_metric_name (atom_to_list (Name ), FixedUnit , Data , Opts ),
85
- case { maps : get ( Name , Acc , undefined ), data (FullName , Data , Scope , Opts )} of
86
- { _ , invalid_temporality } ->
89
+ case data (FullName , Data , Scope , Opts ) of
90
+ invalid_temporality ->
87
91
Acc ;
88
- { undefined , TextData } ->
92
+ TextData ->
89
93
Preamble = preamble (MetricNameUnit , Description , FixedUnit , Data ),
90
- maps :put (Name , #{preamble => Preamble , data => TextData }, Acc );
91
- _ ->
92
- Acc
94
+ Acc #{Name => #{preamble => Preamble , data => TextData }}
93
95
end .
94
96
95
97
fix_metric_name (Name , Unit , Data , # opts {add_total_suffix = AddTotalSuffix }) ->
@@ -100,10 +102,14 @@ fix_metric_name(Name, Unit, Data, #opts{add_total_suffix=AddTotalSuffix}) ->
100
102
_ -> reverse_append (MetricName , string :reverse ([$_ | Unit ]))
101
103
end ,
102
104
103
- FullName = case {Name , AddTotalSuffix , Data } of
104
- {Name1 , _ , _ } when is_map_key (Name1 , ? INFO_METRICS ) -> string :reverse (" _info" ) ++ MetricNameUnit ;
105
- {_ , true , # sum {is_monotonic = true }} -> reverse_append (MetricNameUnit , string :reverse (" _total" ));
106
- _ -> MetricNameUnit
105
+ FullName =
106
+ case Data of
107
+ _ when is_map_key (Name , ? INFO_METRICS ) ->
108
+ string :reverse (" _info" ) ++ MetricNameUnit ;
109
+ # sum {is_monotonic = true } when AddTotalSuffix =:= true ->
110
+ reverse_append (MetricNameUnit , string :reverse (" _total" ));
111
+ _ ->
112
+ MetricNameUnit
107
113
end ,
108
114
109
115
{string :reverse (MetricNameUnit ), string :reverse (FullName )}.
@@ -638,4 +644,4 @@ no_otel_scope_test() ->
638
644
metrics_to_string (Metrics , #{add_scope_info => false })
639
645
).
640
646
641
- - endif .
647
+ - endif .
0 commit comments