diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/servicediscovery/MemFDUnixWriterJNA.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/servicediscovery/MemFDUnixWriterJNA.java index 6743a39bc08..33eaec534fe 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/servicediscovery/MemFDUnixWriterJNA.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/servicediscovery/MemFDUnixWriterJNA.java @@ -5,9 +5,12 @@ import com.sun.jna.Native; import com.sun.jna.NativeLong; import com.sun.jna.Pointer; +import datadog.trace.api.GlobalTracer; +import datadog.trace.api.Tracer; +import datadog.trace.context.TraceScope; public final class MemFDUnixWriterJNA extends MemFDUnixWriter { - private final LibC libc = Native.load("c", LibC.class); + private final LibC libc; private interface LibC extends Library { long syscall(long number, Object... args); @@ -17,6 +20,14 @@ private interface LibC extends Library { int fcntl(int fd, int cmd, int arg); } + public MemFDUnixWriterJNA() { + final Tracer tracer = GlobalTracer.get(); + // JNA initialisation can do ldconfig and other commands. Those are hidden since internal. + try (TraceScope closeme = tracer != null ? tracer.muteTracing() : null) { + libc = Native.load("c", LibC.class); + } + } + @Override protected long syscall(long number, String name, int flags) { return libc.syscall(number, name, flags); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index f434fe820b9..e3c1f585a26 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -919,10 +919,7 @@ private CoreTracer( () -> { final ServiceDiscovery serviceDiscovery = serviceDiscoveryFactory.get(); if (serviceDiscovery != null) { - // JNA can do ldconfig and other commands. Those are hidden since internal. - try (final TraceScope blackhole = muteTracing()) { - serviceDiscovery.writeTracerMetadata(config); - } + serviceDiscovery.writeTracerMetadata(config); } }, 1,