diff --git a/dd-java-agent/instrumentation/trace-annotation/src/main/java/datadog/trace/instrumentation/trace_annotation/TraceConfigInstrumentation.java b/dd-java-agent/instrumentation/trace-annotation/src/main/java/datadog/trace/instrumentation/trace_annotation/TraceConfigInstrumentation.java index 9ecd3312d7..5be4930288 100644 --- a/dd-java-agent/instrumentation/trace-annotation/src/main/java/datadog/trace/instrumentation/trace_annotation/TraceConfigInstrumentation.java +++ b/dd-java-agent/instrumentation/trace-annotation/src/main/java/datadog/trace/instrumentation/trace_annotation/TraceConfigInstrumentation.java @@ -42,16 +42,25 @@ public class TraceConfigInstrumentation implements Instrumenter { + PACKAGE_CLASS_NAME_REGEX + "\\[" + METHOD_LIST_REGEX - + "\\]\\s*;?\\s*"; + + "\\]"; private final Map> classMethodsToTrace; + private boolean validateConfigString(String configString) { + for (String segment : configString.split(";")) { + if (!segment.trim().matches(CONFIG_FORMAT)) { + return false; + } + } + return true; + } + public TraceConfigInstrumentation() { final String configString = Config.get().getTraceMethods(); if (configString == null || configString.trim().isEmpty()) { classMethodsToTrace = Collections.emptyMap(); - } else if (!configString.matches(CONFIG_FORMAT)) { + } else if (!validateConfigString(configString)) { log.warn( "Invalid trace method config '{}'. Must match 'package.Class$Name[method1,method2];*'.", configString);