Skip to content

Commit bf08e05

Browse files
committed
fix: erase persistent terms on app stop
1 parent 977dcb1 commit bf08e05

File tree

6 files changed

+32
-5
lines changed

6 files changed

+32
-5
lines changed

apps/opentelemetry/src/opentelemetry_app.erl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ start(_StartType, _StartArgs) ->
5454
end.
5555

5656
stop(_State) ->
57+
_ = opentelemetry:cleanup_persistent_terms(),
58+
_ = otel_span_limits:cleanup_persistent_terms(),
5759
ok.
5860

5961
%% internal functions

apps/opentelemetry/src/otel_span_limits.erl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,16 @@
2525
event_count_limit/0,
2626
link_count_limit/0,
2727
attribute_per_event_limit/0,
28-
attribute_per_link_limit/0]).
28+
attribute_per_link_limit/0,
29+
cleanup_persistent_terms/0]).
2930

3031
-include("otel_span.hrl").
3132

3233
-define(SPAN_LIMITS_KEY, {?MODULE, span_limits}).
3334

3435
-spec get() -> #span_limits{}.
3536
get() ->
36-
persistent_term:get(?SPAN_LIMITS_KEY).
37+
persistent_term:get(?SPAN_LIMITS_KEY, #span_limits{}).
3738

3839
-spec set(otel_configuration:t()) -> ok.
3940
set(#{attribute_count_limit := AttributeCountLimit,
@@ -80,3 +81,6 @@ get_limit(attribute_per_event_limit, #span_limits{attribute_per_event_limit=Attr
8081
AttributePerEventLimit;
8182
get_limit(attribute_per_link_limit, #span_limits{attribute_per_link_limit=AttributePerLinkLimit}) ->
8283
AttributePerLinkLimit.
84+
85+
cleanup_persistent_terms() ->
86+
otel_utils:cleanup_persistent_terms(?MODULE).

apps/opentelemetry_api/src/opentelemetry.erl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@
5959
status/1,
6060
status/2,
6161
verify_and_set_term/3,
62-
vsn_to_binary/1]).
62+
vsn_to_binary/1,
63+
cleanup_persistent_terms/0]).
6364

6465
-include("opentelemetry.hrl").
6566
-include_lib("kernel/include/logger.hrl").
@@ -445,6 +446,9 @@ status(?OTEL_STATUS_UNSET, _Message) ->
445446
status(_, _) ->
446447
undefined.
447448

449+
cleanup_persistent_terms() ->
450+
otel_utils:cleanup_persistent_terms(?MODULE).
451+
448452
%% internal functions
449453

450454
-spec verify_and_set_term(module() | {module(), term()}, term(), atom()) -> boolean().

apps/opentelemetry_api/src/otel_utils.erl

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
format_binary_string/2,
2222
format_binary_string/3,
2323
assert_to_binary/1,
24-
unicode_to_binary/1]).
24+
unicode_to_binary/1,
25+
cleanup_persistent_terms/1]).
2526

2627
-if(?OTP_RELEASE >= 24).
2728
format_exception(Kind, Reason, StackTrace) ->
@@ -56,3 +57,14 @@ unicode_to_binary(String) ->
5657
_ ->
5758
{error, bad_binary_conversion}
5859
end.
60+
61+
-spec cleanup_persistent_terms(module()) -> ok.
62+
cleanup_persistent_terms(Module) ->
63+
lists:foreach(
64+
fun({Key, _}) ->
65+
case is_tuple(Key) andalso element(1, Key) =:= Module of
66+
true -> persistent_term:erase(Key);
67+
false -> ok
68+
end
69+
end,
70+
persistent_term:get()).

apps/opentelemetry_api_experimental/src/opentelemetry_experimental.erl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
set_default_meter/1,
2424
set_default_meter/2,
2525
get_meter/0,
26-
get_meter/1]).
26+
get_meter/1,
27+
cleanup_persistent_terms/0]).
2728

2829
-include_lib("kernel/include/logger.hrl").
2930
-include("otel_meter.hrl").
@@ -118,3 +119,6 @@ set_meter(Name, Vsn, SchemaUrl, Meter) ->
118119
Meter:: meter().
119120
set_meter(MeterProvider, Name, Vsn, SchemaUrl, Meter) ->
120121
opentelemetry:verify_and_set_term(Meter, ?METER_KEY(MeterProvider, {Name, Vsn, SchemaUrl}), otel_meter).
122+
123+
cleanup_persistent_terms() ->
124+
otel_utils:cleanup_persistent_terms(?MODULE).

apps/opentelemetry_experimental/src/opentelemetry_experimental_app.erl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ start(_StartType, _StartArgs) ->
2424
{ok, Pid}.
2525

2626
stop(_State) ->
27+
_ = opentelemetry_experimental:cleanup_persistent_terms(),
2728
ok.
2829

2930
%% internal functions

0 commit comments

Comments
 (0)