File tree Expand file tree Collapse file tree 3 files changed +39
-78
lines changed
integrations/opentelemetry Expand file tree Collapse file tree 3 files changed +39
-78
lines changed Original file line number Diff line number Diff line change 33import sentry_sdk
44from sentry_sdk .consts import ClientConstructor
55from sentry_sdk .opentelemetry .scope import setup_scope_context_management
6+ from sentry_sdk .opentelemetry .integration import (
7+ patch_readable_span ,
8+ setup_sentry_tracing ,
9+ )
610
711if TYPE_CHECKING :
812 from typing import Any , Optional
@@ -22,6 +26,8 @@ def _init(*args, **kwargs):
2226
2327 This takes the same arguments as the client constructor.
2428 """
29+ patch_readable_span ()
30+ setup_sentry_tracing ()
2531 setup_scope_context_management ()
2632 client = sentry_sdk .Client (* args , ** kwargs )
2733 sentry_sdk .get_global_scope ().set_client (client )
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ from opentelemetry import trace
2+ from opentelemetry .propagate import set_global_textmap
3+ from opentelemetry .sdk .trace import TracerProvider , Span , ReadableSpan
4+
5+ from sentry_sdk .opentelemetry .propagator import SentryPropagator
6+ from sentry_sdk .opentelemetry .sampler import SentrySampler
7+ from sentry_sdk .opentelemetry .span_processor import SentrySpanProcessor
8+
9+
10+ def patch_readable_span ():
11+ # type: () -> None
12+ """
13+ We need to pass through sentry specific metadata/objects from Span to ReadableSpan
14+ to work with them consistently in the SpanProcessor.
15+ """
16+ old_readable_span = Span ._readable_span
17+
18+ def sentry_patched_readable_span (self ):
19+ # type: (Span) -> ReadableSpan
20+ readable_span = old_readable_span (self )
21+ readable_span ._sentry_meta = getattr (self , "_sentry_meta" , {}) # type: ignore[attr-defined]
22+ return readable_span
23+
24+ Span ._readable_span = sentry_patched_readable_span # type: ignore[method-assign]
25+
26+
27+ def setup_sentry_tracing ():
28+ # type: () -> None
29+ provider = TracerProvider (sampler = SentrySampler ())
30+ provider .add_span_processor (SentrySpanProcessor ())
31+ trace .set_tracer_provider (provider )
32+
33+ set_global_textmap (SentryPropagator ())
You can’t perform that action at this time.
0 commit comments