From 21f968abb45190e280e0cde3ea1468b36d4524f8 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Wed, 2 Feb 2022 22:19:42 +0100 Subject: [PATCH] Add missing return type matchers to the executor instrumentation (#5294) --- .../JavaExecutorInstrumentation.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaExecutorInstrumentation.java b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaExecutorInstrumentation.java index b6137f17c5..6515fa7118 100644 --- a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaExecutorInstrumentation.java +++ b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/javaconcurrent/JavaExecutorInstrumentation.java @@ -5,8 +5,11 @@ package io.opentelemetry.javaagent.instrumentation.javaconcurrent; -import static net.bytebuddy.matcher.ElementMatchers.nameMatches; +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasSuperType; +import static net.bytebuddy.matcher.ElementMatchers.is; import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; +import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -39,26 +42,34 @@ public class JavaExecutorInstrumentation extends AbstractExecutorInstrumentation named("execute").and(takesArgument(0, ForkJoinTask.class)), JavaExecutorInstrumentation.class.getName() + "$SetJavaForkJoinStateAdvice"); transformer.applyAdviceToMethod( - named("submit").and(takesArgument(0, Runnable.class)), + named("submit") + .and(takesArgument(0, Runnable.class)) + .and(returns(hasSuperType(is(Future.class)))), JavaExecutorInstrumentation.class.getName() + "$SetSubmitRunnableStateAdvice"); transformer.applyAdviceToMethod( - named("submit").and(takesArgument(0, Callable.class)), + named("submit") + .and(takesArgument(0, Callable.class)) + .and(returns(hasSuperType(is(Future.class)))), JavaExecutorInstrumentation.class.getName() + "$SetCallableStateAdvice"); transformer.applyAdviceToMethod( named("submit").and(takesArgument(0, ForkJoinTask.class)), JavaExecutorInstrumentation.class.getName() + "$SetJavaForkJoinStateAdvice"); transformer.applyAdviceToMethod( - nameMatches("invoke(Any|All)$").and(takesArgument(0, Collection.class)), + namedOneOf("invokeAny", "invokeAll").and(takesArgument(0, Collection.class)), JavaExecutorInstrumentation.class.getName() + "$SetCallableStateForCallableCollectionAdvice"); transformer.applyAdviceToMethod( - nameMatches("invoke").and(takesArgument(0, ForkJoinTask.class)), + named("invoke").and(takesArgument(0, ForkJoinTask.class)), JavaExecutorInstrumentation.class.getName() + "$SetJavaForkJoinStateAdvice"); transformer.applyAdviceToMethod( - named("schedule").and(takesArgument(0, Runnable.class)), + named("schedule") + .and(takesArgument(0, Runnable.class)) + .and(returns(hasSuperType(is(Future.class)))), JavaExecutorInstrumentation.class.getName() + "$SetSubmitRunnableStateAdvice"); transformer.applyAdviceToMethod( - named("schedule").and(takesArgument(0, Callable.class)), + named("schedule") + .and(takesArgument(0, Callable.class)) + .and(returns(hasSuperType(is(Future.class)))), JavaExecutorInstrumentation.class.getName() + "$SetCallableStateAdvice"); }