diff --git a/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java b/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java index ee6baffd60bd..d5e01ff2ef64 100644 --- a/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java +++ b/instrumentation/external-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/extannotations/ExternalAnnotationInstrumentation.java @@ -11,6 +11,7 @@ import static net.bytebuddy.matcher.ElementMatchers.declaresMethod; import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith; import static net.bytebuddy.matcher.ElementMatchers.isDeclaredBy; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; import static net.bytebuddy.matcher.ElementMatchers.none; import static net.bytebuddy.matcher.ElementMatchers.not; @@ -109,7 +110,7 @@ public ElementMatcher typeMatcher() { @Override public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( - isAnnotatedWith(traceAnnotationMatcher).and(not(excludedMethodsMatcher)), + isAnnotatedWith(traceAnnotationMatcher).and(not(excludedMethodsMatcher)).and(isMethod()), ExternalAnnotationInstrumentation.class.getName() + "$ExternalAnnotationAdvice"); } diff --git a/instrumentation/external-annotations/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/extannotations/SayTracedHello.java b/instrumentation/external-annotations/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/extannotations/SayTracedHello.java index 7dae3fb47395..f8de68bfc376 100644 --- a/instrumentation/external-annotations/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/extannotations/SayTracedHello.java +++ b/instrumentation/external-annotations/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/extannotations/SayTracedHello.java @@ -12,6 +12,12 @@ @SuppressWarnings("UnnecessarilyFullyQualified") public class SayTracedHello { + public SayTracedHello() {} + + // used to verify that constructor with tracing annotation doesn't break instrumentation + @com.appoptics.api.ext.LogMethod + public SayTracedHello(String unused) {} + @com.appoptics.api.ext.LogMethod public String appoptics() { Span.current().setAttribute("providerAttr", "AppOptics");