From ba9fc85ffb24e68053d236b272e0e9f77834f499 Mon Sep 17 00:00:00 2001 From: Mikael Date: Mon, 18 Mar 2024 17:12:00 +0100 Subject: [PATCH] refactor: leverage intersect_with --- content/en/docs/languages/erlang/sampling.md | 22 ++++++++------------ 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/content/en/docs/languages/erlang/sampling.md b/content/en/docs/languages/erlang/sampling.md index 5547ff179092..be2c7fa04716 100644 --- a/content/en/docs/languages/erlang/sampling.md +++ b/content/en/docs/languages/erlang/sampling.md @@ -159,16 +159,12 @@ description(_) -> <<"AttributeSampler">>. should_sample(_Ctx, _TraceId, _Links, _SpanName, _SpanKind, Attributes, ConfigAttributes) -> - case maps:intersect(Attributes, ConfigAttributes) of - Intersection when map_size(Intersection) > 0 -> - Keys = maps:keys(Intersection), - ConfAttrPairs = [{maps:get(Key, Attr), maps:get(Key, Conf)} || Key <- Keys], - case lists:any(fun({A, B}) -> A == B end, ConfAttrPairs) of - true -> {?DROP, [], []}; - _ -> {?RECORD_AND_SAMPLE, [], []} - end; - _ -> {?RECORD_AND_SAMPLE, [], []} + ConfAttrPairs = maps:intersect_with(fun (_key, Attr, Conf) -> {Attr, Conf} end, Attributes, ConfigAttributes), + case lists:any(fun({_, {A, B}}) -> A == B end, maps:to_list(ConfAttrPairs)) of + true -> {drop, [], []}; + _ -> {record_and_sample, [], []} end +end. ``` {{% /tab %}} {{% tab Elixir %}} @@ -189,12 +185,12 @@ defmodule AttributesSampler do def should_sample(_ctx, _trace_id, _links, _span_name, _span_kind, attributes, config_attributes) do attr_match = - Map.intersect(attributes, config_attributes) - |> Map.keys() - |> Enum.map(fn key -> {Map.get(attributes, key), Map.get(config_attributes, key)} end) - |> Enum.any?(fn {attr, conf} -> attr == conf end) + Map.intersect(attributes, config_attributes, fn _key, attr, conf -> {attr, conf} end) + |> Map.to_list() + |> Enum.any?(fn {_, {attr, conf}} -> attr == conf end) if attr_match, do: {:drop, [], []}, else: {:record_and_sample, [], []} + end end ```