File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -16,6 +16,8 @@ Released 2020-06-10
1616 ([ #764 ] ( https://github.com/open-telemetry/opentelemetry-python/pull/764 ) )
1717- Add SumObserver and UpDownSumObserver in metrics
1818 ([ #789 ] ( https://github.com/open-telemetry/opentelemetry-python/pull/789 ) )
19+ - Log a warning when replacing the global Tracer/Meter provider
20+ ([ #856 ] ( https://github.com/open-telemetry/opentelemetry-python/pull/856 ) )
1921
2022## 0.8b0
2123
Original file line number Diff line number Diff line change @@ -460,6 +460,10 @@ def get_meter(
460460def 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
Original file line number Diff line number Diff line change @@ -463,6 +463,10 @@ def get_tracer(
463463def 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
Original file line number Diff line number Diff line change 1+ # type:ignore
2+ import unittest
3+ from logging import WARNING
4+
5+ from opentelemetry import metrics
6+ from opentelemetry .sdk .metrics import MeterProvider
7+
8+
9+ class TestGlobals (unittest .TestCase ):
10+ def test_meter_provider_override_warning (self ):
11+ """metrics.set_meter_provider should throw a warning when overridden"""
12+ metrics .set_meter_provider (MeterProvider ())
13+ with self .assertLogs (level = WARNING ) as test :
14+ metrics .set_meter_provider (MeterProvider ())
15+ self .assertEqual (
16+ test .output ,
17+ [
18+ (
19+ "WARNING:opentelemetry.metrics:Overriding current "
20+ "MeterProvider"
21+ )
22+ ],
23+ )
Original file line number Diff line number Diff line change 11import unittest
2+ from logging import WARNING
23from unittest .mock import patch
34
45from opentelemetry import context , trace
6+ from opentelemetry .sdk .trace import TracerProvider # type:ignore
57
68
79class TestGlobals (unittest .TestCase ):
@@ -20,6 +22,21 @@ 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+ (
34+ "WARNING:opentelemetry.trace:Overriding current "
35+ "TracerProvider"
36+ )
37+ ],
38+ )
39+
2340
2441class TestTracer (unittest .TestCase ):
2542 def setUp (self ):
You can’t perform that action at this time.
0 commit comments