`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 <zhouyanming@gmail.com>
This commit is contained in:
parent
edd51d45a1
commit
b52c8c959f
|
@ -72,7 +72,7 @@ public final class GlobalOpenTelemetry {
|
|||
* interface FQCN but the specified provider cannot be found.
|
||||
*/
|
||||
public static OpenTelemetry get() {
|
||||
OpenTelemetry openTelemetry = globalOpenTelemetry;
|
||||
ObfuscatedOpenTelemetry openTelemetry = globalOpenTelemetry;
|
||||
if (openTelemetry == null) {
|
||||
synchronized (mutex) {
|
||||
openTelemetry = globalOpenTelemetry;
|
||||
|
@ -88,7 +88,7 @@ public final class GlobalOpenTelemetry {
|
|||
}
|
||||
}
|
||||
}
|
||||
return openTelemetry;
|
||||
return openTelemetry.delegate == OpenTelemetry.noop() ? OpenTelemetry.noop() : openTelemetry;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -115,4 +115,11 @@ public abstract class AbstractOpenTelemetryTest {
|
|||
+ "propagators=DefaultContextPropagators{textMapPropagator=NoopTextMapPropagator}"
|
||||
+ "}");
|
||||
}
|
||||
|
||||
@Test
|
||||
void neverReturnsObfuscatedNoop() {
|
||||
assertThat(GlobalOpenTelemetry.get()).isSameAs(OpenTelemetry.noop());
|
||||
// ensure sequential calls of GlobalOpenTelemetry.get() return same object
|
||||
assertThat(GlobalOpenTelemetry.get()).isSameAs(OpenTelemetry.noop());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -372,7 +372,7 @@ class AutoConfiguredOpenTelemetrySdkTest {
|
|||
|
||||
@Test
|
||||
void builder_setResultAsGlobalFalse() {
|
||||
GlobalOpenTelemetry.set(OpenTelemetry.noop());
|
||||
GlobalOpenTelemetry.set(mock(OpenTelemetry.class));
|
||||
|
||||
OpenTelemetrySdk openTelemetry = builder.build().getOpenTelemetrySdk();
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ import static org.assertj.core.api.Assertions.assertThatCode;
|
|||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
|
@ -161,7 +162,7 @@ class DeclarativeConfigurationTest {
|
|||
|
||||
@Test
|
||||
void configFile_setResultAsGlobalFalse() {
|
||||
GlobalOpenTelemetry.set(OpenTelemetry.noop());
|
||||
GlobalOpenTelemetry.set(mock(OpenTelemetry.class));
|
||||
ConfigProperties config =
|
||||
DefaultConfigProperties.createFromMap(
|
||||
Collections.singletonMap("otel.experimental.config.file", configFilePath.toString()));
|
||||
|
|
Loading…
Reference in New Issue