From 66f20769e4dd3d8dc8c6a7c939b1a2d048ba075d Mon Sep 17 00:00:00 2001 From: Neel Shah Date: Tue, 27 May 2025 17:31:55 +0200 Subject: [PATCH] Cleanup meta references on flush --- sentry_sdk/opentelemetry/span_processor.py | 8 +++++++- sentry_sdk/opentelemetry/utils.py | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/sentry_sdk/opentelemetry/span_processor.py b/sentry_sdk/opentelemetry/span_processor.py index b5279bccb0..a148fb0f62 100644 --- a/sentry_sdk/opentelemetry/span_processor.py +++ b/sentry_sdk/opentelemetry/span_processor.py @@ -29,6 +29,7 @@ get_profile_context, get_sentry_meta, set_sentry_meta, + delete_sentry_meta, ) from sentry_sdk.profiler.continuous_profiler import ( try_autostart_continuous_profiler, @@ -173,6 +174,7 @@ def _flush_root_span(self, span): # TODO-neel-potel sort and cutoff max spans sentry_sdk.capture_event(transaction_event) + self._cleanup_references([span] + collected_spans) def _append_child_span(self, span): # type: (ReadableSpan) -> None @@ -253,7 +255,6 @@ def _root_span_to_transaction_event(self, span): profile.__exit__(None, None, None) if profile.valid(): event["profile"] = profile - set_sentry_meta(span, "profile", None) return event @@ -314,6 +315,11 @@ def _common_span_transaction_attributes_as_json(self, span): return common_json + def _cleanup_references(self, spans): + # type: (List[ReadableSpan]) -> None + for span in spans: + delete_sentry_meta(span) + def _log_debug_info(self): # type: () -> None import pprint diff --git a/sentry_sdk/opentelemetry/utils.py b/sentry_sdk/opentelemetry/utils.py index b9dbbd5f09..abee007a6b 100644 --- a/sentry_sdk/opentelemetry/utils.py +++ b/sentry_sdk/opentelemetry/utils.py @@ -464,6 +464,14 @@ def set_sentry_meta(span, key, value): span._sentry_meta = sentry_meta # type: ignore[union-attr] +def delete_sentry_meta(span): + # type: (Union[AbstractSpan, ReadableSpan]) -> None + try: + del span._sentry_meta # type: ignore[union-attr] + except AttributeError: + pass + + def get_profile_context(span): # type: (ReadableSpan) -> Optional[dict[str, str]] if not span.attributes: