Skip to content

Commit 74326e0

Browse files
committed
finish launcher span with error via RunMainAdvice
1 parent bf99260 commit 74326e0

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

dd-java-agent/instrumentation/spark/spark-common/src/main/java/datadog/trace/instrumentation/spark/AbstractSparkInstrumentation.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,17 @@ public static void exit(@Advice.Thrown Throwable throwable) {
106106
if (AbstractDatadogSparkListener.listener != null) {
107107
AbstractDatadogSparkListener.listener.finishApplication(
108108
System.currentTimeMillis(), throwable, 0, null);
109+
} else {
110+
try {
111+
Class<?> adviceClass =
112+
Thread.currentThread()
113+
.getContextClassLoader()
114+
.loadClass("datadog.trace.instrumentation.spark.SparkLauncherAdvice");
115+
java.lang.reflect.Method finishMethod =
116+
adviceClass.getMethod("finishLauncherSpan", Throwable.class);
117+
finishMethod.invoke(null, throwable);
118+
} catch (Exception ignored) {
119+
}
109120
}
110121
}
111122
}

dd-java-agent/instrumentation/spark/spark-common/src/main/java/datadog/trace/instrumentation/spark/SparkLauncherAdvice.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static synchronized void createLauncherSpan(String resource) {
2626

2727
AgentTracer.TracerAPI tracer = AgentTracer.get();
2828
AgentSpan span =
29-
tracer.buildSpan("spark.launcher").withSpanType("spark").withResourceName(resource).start();
29+
tracer.buildSpan("spark.launcher.launch").withSpanType("spark").withResourceName(resource).start();
3030
span.setSamplingPriority(PrioritySampling.USER_KEEP, SamplingMechanism.DATA_JOBS);
3131
launcherSpan = span;
3232

@@ -59,6 +59,18 @@ public static synchronized void finishLauncherSpan(int exitCode) {
5959
launcherSpan = null;
6060
}
6161

62+
public static synchronized void finishLauncherSpan(Throwable throwable) {
63+
AgentSpan span = launcherSpan;
64+
if (span == null) {
65+
return;
66+
}
67+
if (throwable != null) {
68+
span.addThrowable(throwable);
69+
}
70+
span.finish();
71+
launcherSpan = null;
72+
}
73+
6274
public static class StartApplicationAdvice {
6375
@Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class)
6476
public static void exit(

0 commit comments

Comments
 (0)