Skip to content

Commit 7ea6b7c

Browse files
authored
fix: use debug logging level for OpenTelemetry message (#442)
* fix: use debug logging level for OpenTelemetry message * only warn at span creation time * add unit test for skipping warning * refactor: rename _warned_telemetry to indicate private and mutable
1 parent fb3ad76 commit 7ea6b7c

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

google/cloud/bigquery/opentelemetry_tracing.py

+12-7
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,11 @@
2323
from opentelemetry.trace.status import Status
2424

2525
HAS_OPENTELEMETRY = True
26+
_warned_telemetry = True
2627

2728
except ImportError:
28-
logger.info(
29-
"This service is instrumented using OpenTelemetry. "
30-
"OpenTelemetry could not be imported; please "
31-
"add opentelemetry-api and opentelemetry-instrumentation "
32-
"packages in order to get BigQuery Tracing data."
33-
)
34-
3529
HAS_OPENTELEMETRY = False
30+
_warned_telemetry = False
3631

3732
_default_attributes = {
3833
"db.system": "BigQuery"
@@ -64,8 +59,18 @@ def create_span(name, attributes=None, client=None, job_ref=None):
6459
Raised if a span could not be yielded or issue with call to
6560
OpenTelemetry.
6661
"""
62+
global _warned_telemetry
6763
final_attributes = _get_final_span_attributes(attributes, client, job_ref)
6864
if not HAS_OPENTELEMETRY:
65+
if not _warned_telemetry:
66+
logger.debug(
67+
"This service is instrumented using OpenTelemetry. "
68+
"OpenTelemetry could not be imported; please "
69+
"add opentelemetry-api and opentelemetry-instrumentation "
70+
"packages in order to get BigQuery Tracing data."
71+
)
72+
_warned_telemetry = True
73+
6974
yield None
7075
return
7176
tracer = trace.get_tracer(__name__)

tests/unit/test_opentelemetry_tracing.py

+12
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,20 @@ def setup():
5252
def test_opentelemetry_not_installed(setup, monkeypatch):
5353
monkeypatch.setitem(sys.modules, "opentelemetry", None)
5454
importlib.reload(opentelemetry_tracing)
55+
assert not opentelemetry_tracing._warned_telemetry
5556
with opentelemetry_tracing.create_span("No-op for opentelemetry") as span:
5657
assert span is None
58+
assert opentelemetry_tracing._warned_telemetry
59+
60+
61+
@pytest.mark.skipif(opentelemetry is None, reason="Require `opentelemetry`")
62+
def test_opentelemetry_not_installed_doesnt_warn(setup, monkeypatch):
63+
monkeypatch.setitem(sys.modules, "opentelemetry", None)
64+
importlib.reload(opentelemetry_tracing)
65+
opentelemetry_tracing._warned_telemetry = True
66+
with opentelemetry_tracing.create_span("No-op for opentelemetry") as span:
67+
assert span is None
68+
assert opentelemetry_tracing._warned_telemetry
5769

5870

5971
@pytest.mark.skipif(opentelemetry is None, reason="Require `opentelemetry`")

0 commit comments

Comments
 (0)