diff --git a/dd-java-agent/instrumentation/quartz-2.0/src/main/java/datadog/trace/instrumentation/quartz/QuartzDecorator.java b/dd-java-agent/instrumentation/quartz-2.0/src/main/java/datadog/trace/instrumentation/quartz/QuartzDecorator.java index a06c07c04aa..fba0e49e2fe 100644 --- a/dd-java-agent/instrumentation/quartz-2.0/src/main/java/datadog/trace/instrumentation/quartz/QuartzDecorator.java +++ b/dd-java-agent/instrumentation/quartz-2.0/src/main/java/datadog/trace/instrumentation/quartz/QuartzDecorator.java @@ -10,6 +10,8 @@ import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; import datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator; import org.quartz.JobExecutionContext; +import org.quartz.JobKey; +import org.quartz.TriggerKey; public class QuartzDecorator extends BaseDecorator { public static final CharSequence SCHEDULED_CALL = UTF8BytesString.create("scheduled.call"); @@ -34,11 +36,21 @@ protected CharSequence component() { public AgentSpan onExecute(final AgentSpan span, JobExecutionContext context) { if (context != null) { - span.setTag(DDTags.RESOURCE_NAME, context.getJobInstance().getClass()).toString(); - span.setTag(QUARTZ_TRIGGER_NAME, context.getTrigger().getKey().getName()); - span.setTag(QUARTZ_TRIGGER_GROUP, context.getTrigger().getKey().getGroup()); - span.setTag(QUARTZ_JOB_NAME, context.getTrigger().getJobKey().getName()); - span.setTag(QUARTZ_JOB_GROUP, context.getTrigger().getJobKey().getGroup()); + if (context.getJobInstance() != null) { + span.setTag(DDTags.RESOURCE_NAME, context.getJobInstance().getClass()).toString(); + } + if (context.getTrigger() != null) { + final TriggerKey key = context.getTrigger().getKey(); + if (key != null) { + span.setTag(QUARTZ_TRIGGER_NAME, key.getName()); + span.setTag(QUARTZ_TRIGGER_GROUP, key.getGroup()); + } + final JobKey jobKey = context.getJobDetail().getKey(); + if (jobKey != null) { + span.setTag(QUARTZ_JOB_NAME, jobKey.getName()); + span.setTag(QUARTZ_JOB_GROUP, jobKey.getGroup()); + } + } } return span; }