Skip to content

Commit 2e5e4ff

Browse files
committed
ref: Move integration out of opentelemetry/integrations/
1 parent 3a2b671 commit 2e5e4ff

File tree

3 files changed

+39
-78
lines changed

3 files changed

+39
-78
lines changed

sentry_sdk/_init_implementation.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
import sentry_sdk
44
from sentry_sdk.consts import ClientConstructor
55
from 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

711
if 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)

sentry_sdk/integrations/opentelemetry/integration.py

Lines changed: 0 additions & 78 deletions
This file was deleted.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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())

0 commit comments

Comments
 (0)