Skip to content

Commit e43a899

Browse files
committed
Added a warning log when the existing TracerProvider and MeterProvider are overridden
1 parent f8e947c commit e43a899

4 files changed

Lines changed: 43 additions & 0 deletions

File tree

opentelemetry-api/src/opentelemetry/metrics/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,10 @@ def get_meter(
460460
def set_meter_provider(meter_provider: MeterProvider) -> None:
461461
"""Sets the current global :class:`~.MeterProvider` object."""
462462
global _METER_PROVIDER # pylint: disable=global-statement
463+
464+
if _METER_PROVIDER is not None:
465+
logger.warning("Overriding current MeterProvider")
466+
463467
_METER_PROVIDER = meter_provider
464468

465469

opentelemetry-api/src/opentelemetry/trace/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,10 @@ def get_tracer(
463463
def set_tracer_provider(tracer_provider: TracerProvider) -> None:
464464
"""Sets the current global :class:`~.TracerProvider` object."""
465465
global _TRACER_PROVIDER # pylint: disable=global-statement
466+
467+
if _TRACER_PROVIDER is not None:
468+
logger.warning("Overriding current TracerProvider")
469+
466470
_TRACER_PROVIDER = tracer_provider
467471

468472

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import unittest
2+
from logging import WARNING
3+
4+
from opentelemetry import metrics
5+
from opentelemetry.sdk.metrics import MeterProvider
6+
7+
8+
class TestGlobals(unittest.TestCase):
9+
def test_meter_provider_override_warning(self):
10+
"""metrics.set_meter_provider should throw a warning when overridden"""
11+
metrics.set_meter_provider(MeterProvider())
12+
with self.assertLogs(level=WARNING) as test:
13+
metrics.set_meter_provider(MeterProvider())
14+
self.assertEqual(
15+
test.output,
16+
[
17+
"WARNING:opentelemetry.metrics:Overriding current "
18+
"MeterProvider"
19+
],
20+
)

opentelemetry-api/tests/trace/test_globals.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import unittest
2+
from logging import WARNING
23
from unittest.mock import patch
34

45
from opentelemetry import context, trace
6+
from opentelemetry.sdk.trace import TracerProvider
57

68

79
class TestGlobals(unittest.TestCase):
@@ -20,6 +22,19 @@ def test_get_tracer(self):
2022
trace.get_tracer("foo", "var", mock_provider)
2123
mock_provider.get_tracer.assert_called_with("foo", "var")
2224

25+
def test_tracer_provider_override_warning(self):
26+
"""trace.set_tracer_provider should throw a warning when overridden"""
27+
trace.set_tracer_provider(TracerProvider())
28+
with self.assertLogs(level=WARNING) as test:
29+
trace.set_tracer_provider(TracerProvider())
30+
self.assertEqual(
31+
test.output,
32+
[
33+
"WARNING:opentelemetry.trace:Overriding current "
34+
"TracerProvider"
35+
],
36+
)
37+
2338

2439
class TestTracer(unittest.TestCase):
2540
def setUp(self):

0 commit comments

Comments
 (0)