Skip to content

Commit b52c8c9

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 b52c8c9

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
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

sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import static org.assertj.core.api.Assertions.assertThatThrownBy;
1212
import static org.mockito.ArgumentMatchers.any;
1313
import static org.mockito.Mockito.doReturn;
14+
import static org.mockito.Mockito.mock;
1415
import static org.mockito.Mockito.never;
1516
import static org.mockito.Mockito.spy;
1617
import static org.mockito.Mockito.times;
@@ -161,7 +162,7 @@ void configFile_NoShutdownHook() {
161162

162163
@Test
163164
void configFile_setResultAsGlobalFalse() {
164-
GlobalOpenTelemetry.set(OpenTelemetry.noop());
165+
GlobalOpenTelemetry.set(mock(OpenTelemetry.class));
165166
ConfigProperties config =
166167
DefaultConfigProperties.createFromMap(
167168
Collections.singletonMap("otel.experimental.config.file", configFilePath.toString()));

0 commit comments

Comments
 (0)