Skip to content

Commit 74f2cec

Browse files
authored
Introduce Context.suppress_instrumentation (#181)
1 parent 2ab7b9d commit 74f2cec

File tree

2 files changed

+12
-2
lines changed
  • ext/opentelemetry-ext-http-requests/src/opentelemetry/ext/http_requests
  • opentelemetry-sdk/src/opentelemetry/sdk/trace/export

2 files changed

+12
-2
lines changed

ext/opentelemetry-ext-http-requests/src/opentelemetry/ext/http_requests/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from requests.sessions import Session
2424

2525
from opentelemetry import propagators
26+
from opentelemetry.context import Context
2627
from opentelemetry.trace import SpanKind
2728

2829

@@ -50,8 +51,8 @@ def enable(tracer):
5051

5152
@functools.wraps(wrapped)
5253
def instrumented_request(self, method, url, *args, **kwargs):
53-
# TODO: Check if we are in an exporter, cf. OpenCensus
54-
# execution_context.is_exporter()
54+
if Context.suppress_instrumentation:
55+
return wrapped(self, method, url, *args, **kwargs)
5556

5657
# See
5758
# https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-semantic-conventions.md#http-client

opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import typing
1919
from enum import Enum
2020

21+
from opentelemetry.context import Context
2122
from opentelemetry.sdk import util
2223

2324
from .. import Span, SpanProcessor
@@ -72,11 +73,15 @@ def on_start(self, span: Span) -> None:
7273
pass
7374

7475
def on_end(self, span: Span) -> None:
76+
suppress_instrumentation = Context.suppress_instrumentation
7577
try:
78+
Context.suppress_instrumentation = True
7679
self.span_exporter.export((span,))
7780
# pylint: disable=broad-except
7881
except Exception as exc:
7982
logger.warning("Exception while exporting data: %s", exc)
83+
finally:
84+
Context.suppress_instrumentation = suppress_instrumentation
8085

8186
def shutdown(self) -> None:
8287
self.span_exporter.shutdown()
@@ -176,11 +181,15 @@ def export(self) -> bool:
176181
while idx < self.max_export_batch_size and self.queue:
177182
self.spans_list[idx] = self.queue.pop()
178183
idx += 1
184+
suppress_instrumentation = Context.suppress_instrumentation
179185
try:
186+
Context.suppress_instrumentation = True
180187
self.span_exporter.export(self.spans_list[:idx])
181188
# pylint: disable=broad-except
182189
except Exception:
183190
logger.exception("Exception while exporting data.")
191+
finally:
192+
Context.suppress_instrumentation = suppress_instrumentation
184193

185194
# clean up list
186195
for index in range(idx):

0 commit comments

Comments
 (0)