From a82b2c7b5085829ed9d994dd656c1f61d7f5401f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Thu, 5 Jun 2025 16:25:28 +0200 Subject: [PATCH 1/3] add jms as an extra integration name where there is JMS involved --- .../trace/agent/tooling/InstrumenterModule.java | 10 ++++++++++ .../aws/v1/sqs/AbstractSqsInstrumentation.java | 6 +++++- .../aws/v1/sqs/SqsJmsMessageInstrumentation.java | 4 ++++ .../aws/v2/sqs/AbstractSqsInstrumentation.java | 6 +++++- .../aws/v2/sqs/SqsJmsMessageInstrumentation.java | 4 ++++ .../trace/instrumentation/jms/JakartaJmsModule.java | 2 +- .../tibcobw6/AbstractTibcoInstrumentation.java | 6 +++++- .../tibcobw6/JmsMessageGetterInstrumentation.java | 4 ++++ 8 files changed, 38 insertions(+), 4 deletions(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java index 42ea6b7207f..b4e2e6caff3 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java @@ -56,6 +56,7 @@ public enum TargetSystem { private static final Logger log = LoggerFactory.getLogger(InstrumenterModule.class); protected static final String[] NO_HELPERS = {}; + protected static final String[] NO_ADDITIONAL_NAMES = NO_HELPERS; private final List instrumentationNames; private final String instrumentationPrimaryName; @@ -72,6 +73,15 @@ public InstrumenterModule(final String instrumentationName, final String... addi enabled = InstrumenterConfig.get().isIntegrationEnabled(instrumentationNames, defaultEnabled()); } + /** Helper method for the ctor above, use to add values to an already built vararg array */ + public static String[] concat(String[] arr, String... extra) { + if (arr.length == 0) return extra; + String[] result = new String[arr.length + extra.length]; + System.arraycopy(arr, 0, result, 0, arr.length); + System.arraycopy(extra, 0, result, arr.length, extra.length); + return result; + } + public String name() { return instrumentationPrimaryName; } diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java index 56fd9f5364b..0e278ee8ab4 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java @@ -4,6 +4,10 @@ public abstract class AbstractSqsInstrumentation extends InstrumenterModule.Tracing { public AbstractSqsInstrumentation() { - super("sqs", "aws-sdk"); + this(NO_ADDITIONAL_NAMES); + } + + public AbstractSqsInstrumentation(String... additionalNames) { + super("sqs", concat(additionalNames, "aws-sdk")); } } diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/SqsJmsMessageInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/SqsJmsMessageInstrumentation.java index 1230881e728..9d43c3229b4 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/SqsJmsMessageInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/SqsJmsMessageInstrumentation.java @@ -21,6 +21,10 @@ public class SqsJmsMessageInstrumentation extends AbstractSqsInstrumentation implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice { + public SqsJmsMessageInstrumentation() { + super("jms"); + } + @Override public String instrumentedType() { return "com.amazon.sqs.javamessaging.message.SQSMessage"; diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java index 4e7665a4c7f..bae46f1fd71 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java @@ -4,6 +4,10 @@ public abstract class AbstractSqsInstrumentation extends InstrumenterModule.Tracing { public AbstractSqsInstrumentation() { - super("sqs", "aws-sdk"); + this(NO_ADDITIONAL_NAMES); + } + + public AbstractSqsInstrumentation(String... additionalNames) { + super("sqs", concat(additionalNames, "aws-sdk")); } } diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/SqsJmsMessageInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/SqsJmsMessageInstrumentation.java index 005700c037c..28c488fd896 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/SqsJmsMessageInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/SqsJmsMessageInstrumentation.java @@ -21,6 +21,10 @@ public class SqsJmsMessageInstrumentation extends AbstractSqsInstrumentation implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice { + public SqsJmsMessageInstrumentation() { + super("jms"); + } + @Override public String instrumentedType() { return "com.amazon.sqs.javamessaging.message.SQSMessage"; diff --git a/dd-java-agent/instrumentation/jakarta-jms/src/main/java/datadog/trace/instrumentation/jms/JakartaJmsModule.java b/dd-java-agent/instrumentation/jakarta-jms/src/main/java/datadog/trace/instrumentation/jms/JakartaJmsModule.java index 4c09fa76324..7b8ead719b5 100644 --- a/dd-java-agent/instrumentation/jakarta-jms/src/main/java/datadog/trace/instrumentation/jms/JakartaJmsModule.java +++ b/dd-java-agent/instrumentation/jakarta-jms/src/main/java/datadog/trace/instrumentation/jms/JakartaJmsModule.java @@ -9,7 +9,7 @@ @AutoService(InstrumenterModule.class) public class JakartaJmsModule extends JavaxJmsModule { public JakartaJmsModule() { - super("jakarta", "jakarta-jms"); + super("jakarta", "jakarta-jms", "jms"); } @Override diff --git a/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java b/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java index b4c020ddf49..28944208d3c 100644 --- a/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java +++ b/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java @@ -7,7 +7,11 @@ public abstract class AbstractTibcoInstrumentation extends InstrumenterModule.Tracing { public AbstractTibcoInstrumentation() { - super("tibco", "tibco_bw"); + this(NO_ADDITIONAL_NAMES); + } + + public AbstractTibcoInstrumentation(String... additionalNames) { + super("tibco", concat(additionalNames, "tibco_bw")); } @Override diff --git a/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/JmsMessageGetterInstrumentation.java b/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/JmsMessageGetterInstrumentation.java index dd447d9f86f..f553abd1c46 100644 --- a/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/JmsMessageGetterInstrumentation.java +++ b/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/JmsMessageGetterInstrumentation.java @@ -16,6 +16,10 @@ public class JmsMessageGetterInstrumentation extends AbstractTibcoInstrumentation implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice { + public JmsMessageGetterInstrumentation() { + super("jms"); + } + @Override public String instrumentedType() { return "com.tibco.bw.jms.shared.primitives.SingleJMSMessageGetter"; From fac125e107a872b282256b4b98355dc351122c9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Thu, 5 Jun 2025 17:59:33 +0200 Subject: [PATCH 2/3] address comments --- .../trace/agent/tooling/InstrumenterModule.java | 11 +---------- .../aws/v1/sqs/AbstractSqsInstrumentation.java | 3 ++- .../aws/v2/sqs/AbstractSqsInstrumentation.java | 3 ++- .../tibcobw6/AbstractTibcoInstrumentation.java | 3 ++- .../src/main/java/datadog/trace/util/Strings.java | 9 +++++++++ 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java index b4e2e6caff3..1bb0fdcddce 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java @@ -56,7 +56,7 @@ public enum TargetSystem { private static final Logger log = LoggerFactory.getLogger(InstrumenterModule.class); protected static final String[] NO_HELPERS = {}; - protected static final String[] NO_ADDITIONAL_NAMES = NO_HELPERS; + protected static final String[] NO_ADDITIONAL_NAMES = {}; private final List instrumentationNames; private final String instrumentationPrimaryName; @@ -73,15 +73,6 @@ public InstrumenterModule(final String instrumentationName, final String... addi enabled = InstrumenterConfig.get().isIntegrationEnabled(instrumentationNames, defaultEnabled()); } - /** Helper method for the ctor above, use to add values to an already built vararg array */ - public static String[] concat(String[] arr, String... extra) { - if (arr.length == 0) return extra; - String[] result = new String[arr.length + extra.length]; - System.arraycopy(arr, 0, result, 0, arr.length); - System.arraycopy(extra, 0, result, arr.length, extra.length); - return result; - } - public String name() { return instrumentationPrimaryName; } diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java index 0e278ee8ab4..9590af580bc 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.aws.v1.sqs; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.util.Strings; public abstract class AbstractSqsInstrumentation extends InstrumenterModule.Tracing { public AbstractSqsInstrumentation() { @@ -8,6 +9,6 @@ public AbstractSqsInstrumentation() { } public AbstractSqsInstrumentation(String... additionalNames) { - super("sqs", concat(additionalNames, "aws-sdk")); + super("sqs", Strings.concat(additionalNames, "aws-sdk")); } } diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java index bae46f1fd71..f2554bcf2f1 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.aws.v2.sqs; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.util.Strings; public abstract class AbstractSqsInstrumentation extends InstrumenterModule.Tracing { public AbstractSqsInstrumentation() { @@ -8,6 +9,6 @@ public AbstractSqsInstrumentation() { } public AbstractSqsInstrumentation(String... additionalNames) { - super("sqs", concat(additionalNames, "aws-sdk")); + super("sqs", Strings.concat(additionalNames, "aws-sdk")); } } diff --git a/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java b/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java index 28944208d3c..7c44cac3f09 100644 --- a/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java +++ b/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java @@ -2,6 +2,7 @@ import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.util.Strings; import java.util.HashMap; import java.util.Map; @@ -11,7 +12,7 @@ public AbstractTibcoInstrumentation() { } public AbstractTibcoInstrumentation(String... additionalNames) { - super("tibco", concat(additionalNames, "tibco_bw")); + super("tibco", Strings.concat(additionalNames, "tibco_bw")); } @Override diff --git a/internal-api/src/main/java/datadog/trace/util/Strings.java b/internal-api/src/main/java/datadog/trace/util/Strings.java index 2fea0e107e5..ec7cfc230a6 100644 --- a/internal-api/src/main/java/datadog/trace/util/Strings.java +++ b/internal-api/src/main/java/datadog/trace/util/Strings.java @@ -220,4 +220,13 @@ public static String toHexString(byte[] value) { } return new String(bytes, US_ASCII); } + + public static String[] concat(String[] arr, String... extra) { + if (arr.length == 0) return extra; + if (extra.length == 0) return arr; + String[] result = new String[arr.length + extra.length]; + System.arraycopy(arr, 0, result, 0, arr.length); + System.arraycopy(extra, 0, result, arr.length, extra.length); + return result; + } } From 4b56007e1af906291abd6a69fde945adf2421a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Fri, 6 Jun 2025 10:34:15 +0200 Subject: [PATCH 3/3] keep parameters to super exlicit (at the cost of a little bit of duplication) --- .../java/datadog/trace/agent/tooling/InstrumenterModule.java | 1 - .../instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java | 2 +- .../instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java | 2 +- .../instrumentation/tibcobw6/AbstractTibcoInstrumentation.java | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java index 1bb0fdcddce..42ea6b7207f 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/InstrumenterModule.java @@ -56,7 +56,6 @@ public enum TargetSystem { private static final Logger log = LoggerFactory.getLogger(InstrumenterModule.class); protected static final String[] NO_HELPERS = {}; - protected static final String[] NO_ADDITIONAL_NAMES = {}; private final List instrumentationNames; private final String instrumentationPrimaryName; diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java index 9590af580bc..7db3c720b72 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/AbstractSqsInstrumentation.java @@ -5,7 +5,7 @@ public abstract class AbstractSqsInstrumentation extends InstrumenterModule.Tracing { public AbstractSqsInstrumentation() { - this(NO_ADDITIONAL_NAMES); + super("sqs", "aws-sdk"); } public AbstractSqsInstrumentation(String... additionalNames) { diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java index f2554bcf2f1..53e711db7ac 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/AbstractSqsInstrumentation.java @@ -5,7 +5,7 @@ public abstract class AbstractSqsInstrumentation extends InstrumenterModule.Tracing { public AbstractSqsInstrumentation() { - this(NO_ADDITIONAL_NAMES); + super("sqs", "aws-sdk"); } public AbstractSqsInstrumentation(String... additionalNames) { diff --git a/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java b/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java index 7c44cac3f09..0e5c427c636 100644 --- a/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java +++ b/dd-java-agent/instrumentation/tibco-businessworks/tibcobw-6/src/main/java/datadog/trace/instrumentation/tibcobw6/AbstractTibcoInstrumentation.java @@ -8,7 +8,7 @@ public abstract class AbstractTibcoInstrumentation extends InstrumenterModule.Tracing { public AbstractTibcoInstrumentation() { - this(NO_ADDITIONAL_NAMES); + super("tibco", "tibco_bw"); } public AbstractTibcoInstrumentation(String... additionalNames) {