Skip to content

Commit d230fd8

Browse files
Mute tracing for subprocesses executed by bootstrap telemetry logic.
1 parent 712d5c3 commit d230fd8

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

dd-java-agent/src/main/java/datadog/trace/bootstrap/BootstrapInitializationTelemetry.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import datadog.json.JsonWriter;
44
import de.thetaphi.forbiddenapis.SuppressForbidden;
5+
import java.io.Closeable;
56
import java.io.OutputStream;
67
import java.util.ArrayList;
78
import java.util.List;
@@ -211,7 +212,8 @@ public ForwarderJsonSenderThread(String forwarderPath, byte[] payload) {
211212
public void run() {
212213
ProcessBuilder builder = new ProcessBuilder(forwarderPath, "library_entrypoint");
213214

214-
try {
215+
// Run forwarder and mute tracing for subprocesses executed in by dd-java-agent.
216+
try (final Closeable ignored = muteTracing()) {
215217
Process process = builder.start();
216218
try (OutputStream out = process.getOutputStream()) {
217219
out.write(payload);
@@ -221,5 +223,18 @@ public void run() {
221223
System.err.println("Failed to send telemetry: " + e.getMessage());
222224
}
223225
}
226+
227+
private Closeable muteTracing() {
228+
try {
229+
Class<?> agentTracerClass =
230+
Class.forName("datadog.trace.bootstrap.instrumentation.api.AgentTracer");
231+
Object tracerAPI = agentTracerClass.getMethod("get").invoke(null);
232+
Object scope = tracerAPI.getClass().getMethod("muteTracing").invoke(tracerAPI);
233+
return (Closeable) scope;
234+
} catch (Throwable e) {
235+
// Ignore all exceptions and fallback to No-Op Closable.
236+
return () -> {};
237+
}
238+
}
224239
}
225240
}

0 commit comments

Comments
 (0)