Skip to content

Commit 952ae58

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 952ae58

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
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
}

sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ void builder_addLoggerProviderCustomizer() {
372372

373373
@Test
374374
void builder_setResultAsGlobalFalse() {
375-
GlobalOpenTelemetry.set(OpenTelemetry.noop());
375+
GlobalOpenTelemetry.set(mock(OpenTelemetry.class));
376376

377377
OpenTelemetrySdk openTelemetry = builder.build().getOpenTelemetrySdk();
378378

0 commit comments

Comments
 (0)