Skip to content

Commit d2734dc

Browse files
committed
GlobalOpenTelemetry.get() should never returns obfuscated Noop OpenTelemetry
Fix inconsistent behavior that first call will return Noop but later calls return obfuscated Noop. Signed-off-by: Yanming Zhou <[email protected]>
1 parent edd51d4 commit d2734dc

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

api/all/src/main/java/io/opentelemetry/api/GlobalOpenTelemetry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ private GlobalOpenTelemetry() {}
7272
* interface FQCN but the specified provider cannot be found.
7373
*/
7474
public static OpenTelemetry get() {
75-
OpenTelemetry openTelemetry = globalOpenTelemetry;
75+
ObfuscatedOpenTelemetry openTelemetry = globalOpenTelemetry;
7676
if (openTelemetry == null) {
7777
synchronized (mutex) {
7878
openTelemetry = globalOpenTelemetry;
@@ -88,7 +88,7 @@ public static OpenTelemetry get() {
8888
}
8989
}
9090
}
91-
return openTelemetry;
91+
return openTelemetry.delegate == OpenTelemetry.noop() ? OpenTelemetry.noop() : openTelemetry;
9292
}
9393

9494
/**

api/testing-internal/src/main/java/io/opentelemetry/api/testing/internal/AbstractOpenTelemetryTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,11 @@ void toString_noop_Valid() {
115115
+ "propagators=DefaultContextPropagators{textMapPropagator=NoopTextMapPropagator}"
116116
+ "}");
117117
}
118+
119+
@Test
120+
void neverReturnsObfuscatedNoop() {
121+
assertThat(GlobalOpenTelemetry.get()).isSameAs(OpenTelemetry.noop());
122+
// ensure sequential calls of GlobalOpenTelemetry.get() return same object
123+
assertThat(GlobalOpenTelemetry.get()).isSameAs(OpenTelemetry.noop());
124+
}
118125
}

0 commit comments

Comments
 (0)