diff --git a/instrumentation/akka/akka-actor-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDefaultSystemMessageQueueInstrumentation.java b/instrumentation/akka/akka-actor-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDefaultSystemMessageQueueInstrumentation.java index 0af07f4d0e43..8d6ba25fcc1c 100644 --- a/instrumentation/akka/akka-actor-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDefaultSystemMessageQueueInstrumentation.java +++ b/instrumentation/akka/akka-actor-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDefaultSystemMessageQueueInstrumentation.java @@ -58,8 +58,13 @@ public static PropagatedContext enter(@Advice.Argument(1) SystemMessage systemMe @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(1) SystemMessage systemMessage, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(SystemMessage.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit( + propagatedContext, throwable, virtualField, systemMessage); } } } diff --git a/instrumentation/akka/akka-actor-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDispatcherInstrumentation.java b/instrumentation/akka/akka-actor-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDispatcherInstrumentation.java index b38e77934352..66567fb20413 100644 --- a/instrumentation/akka/akka-actor-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDispatcherInstrumentation.java +++ b/instrumentation/akka/akka-actor-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaDispatcherInstrumentation.java @@ -52,8 +52,12 @@ public static PropagatedContext enterDispatch(@Advice.Argument(1) Envelope envel @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitDispatch( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(1) Envelope envelope, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(Envelope.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, envelope); } } } diff --git a/instrumentation/akka/akka-actor-fork-join-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinPoolInstrumentation.java b/instrumentation/akka/akka-actor-fork-join-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinPoolInstrumentation.java index fd1b534c338d..2607f990b5ec 100644 --- a/instrumentation/akka/akka-actor-fork-join-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinPoolInstrumentation.java +++ b/instrumentation/akka/akka-actor-fork-join-2.5/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkaactor/AkkaForkJoinPoolInstrumentation.java @@ -60,8 +60,12 @@ public static PropagatedContext enterJobSubmit(@Advice.Argument(0) ForkJoinTask< @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitJobSubmit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(0) ForkJoinTask task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField, PropagatedContext> virtualField = + VirtualField.find(ForkJoinTask.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } } diff --git a/instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/ExecutorAdviceHelper.java b/instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/ExecutorAdviceHelper.java index 5471179df34d..769f3b86fc71 100644 --- a/instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/ExecutorAdviceHelper.java +++ b/instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/ExecutorAdviceHelper.java @@ -94,8 +94,11 @@ public static PropagatedContext attachContextToTask( * Clean up {@code propagatedContext} in case of any submission errors. Call this method after the * submission method has exited. */ - public static void cleanUpAfterSubmit( - @Nullable PropagatedContext propagatedContext, @Nullable Throwable throwable) { + public static void cleanUpAfterSubmit( + @Nullable PropagatedContext propagatedContext, + @Nullable Throwable throwable, + VirtualField virtualField, + T task) { if (propagatedContext != null && throwable != null) { /* Note: this may potentially clear somebody else's parent span if we didn't set it @@ -106,6 +109,8 @@ public static void cleanUpAfterSubmit( exceptions. */ propagatedContext.clear(); + // setting the field to null removes it from the fallback map + virtualField.set(task, null); } } @@ -119,6 +124,8 @@ public static void cleanPropagatedContext( PropagatedContext propagatedContext = virtualField.get(task); if (propagatedContext != null) { propagatedContext.clear(); + // setting the field to null removes it from the fallback map + virtualField.set(task, null); } } diff --git a/instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/TaskAdviceHelper.java b/instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/TaskAdviceHelper.java index ce9099fc0baa..58cba93897fb 100644 --- a/instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/TaskAdviceHelper.java +++ b/instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/TaskAdviceHelper.java @@ -22,6 +22,8 @@ public static Scope makePropagatedContextCurrent( VirtualField virtualField, T task) { PropagatedContext propagatedContext = virtualField.get(task); if (propagatedContext != null) { + // setting the field to null removes it from the fallback map + virtualField.set(task, null); Context context = propagatedContext.getAndClear(); if (context != null) { return context.makeCurrent(); diff --git a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/JavaExecutorInstrumentation.java b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/JavaExecutorInstrumentation.java index 979fe92f48f6..46957bf399e8 100644 --- a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/JavaExecutorInstrumentation.java +++ b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/JavaExecutorInstrumentation.java @@ -105,8 +105,12 @@ public static PropagatedContext enterJobSubmit( @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitJobSubmit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(0) Runnable task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(Runnable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } @@ -126,8 +130,12 @@ public static PropagatedContext enterJobSubmit(@Advice.Argument(0) ForkJoinTask< @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitJobSubmit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(0) ForkJoinTask task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField, PropagatedContext> virtualField = + VirtualField.find(ForkJoinTask.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } @@ -148,6 +156,7 @@ public static PropagatedContext enterJobSubmit( @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitJobSubmit( + @Advice.Argument(0) Runnable task, @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable, @Advice.Return Future future) { @@ -156,7 +165,9 @@ public static void exitJobSubmit( VirtualField.find(Future.class, PropagatedContext.class); virtualField.set(future, propagatedContext); } - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + VirtualField virtualField = + VirtualField.find(Runnable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } @@ -176,6 +187,7 @@ public static PropagatedContext enterJobSubmit(@Advice.Argument(0) Callable t @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitJobSubmit( + @Advice.Argument(0) Callable task, @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable, @Advice.Return Future future) { @@ -184,7 +196,9 @@ public static void exitJobSubmit( VirtualField.find(Future.class, PropagatedContext.class); virtualField.set(future, propagatedContext); } - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + VirtualField, PropagatedContext> virtualField = + VirtualField.find(Callable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } @@ -230,7 +244,8 @@ public static void submitExit( VirtualField, PropagatedContext> virtualField = VirtualField.find(Callable.class, PropagatedContext.class); PropagatedContext propagatedContext = virtualField.get(task); - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + ExecutorAdviceHelper.cleanUpAfterSubmit( + propagatedContext, throwable, virtualField, task); } } } diff --git a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/JavaForkJoinTaskInstrumentation.java b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/JavaForkJoinTaskInstrumentation.java index 4697200058ae..f62c321eaea4 100644 --- a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/JavaForkJoinTaskInstrumentation.java +++ b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/JavaForkJoinTaskInstrumentation.java @@ -117,8 +117,12 @@ public static PropagatedContext enterFork(@Advice.This ForkJoinTask task) { @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitFork( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.This ForkJoinTask task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField, PropagatedContext> virtualField = + VirtualField.find(ForkJoinTask.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } } diff --git a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/StructuredTaskScopeInstrumentation.java b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/StructuredTaskScopeInstrumentation.java index 16678b268517..1b67b6e36e8e 100644 --- a/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/StructuredTaskScopeInstrumentation.java +++ b/instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/StructuredTaskScopeInstrumentation.java @@ -50,8 +50,12 @@ public static PropagatedContext enterCallableFork(@Advice.Argument(0) Callable task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField, PropagatedContext> virtualField = + VirtualField.find(Callable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } } diff --git a/instrumentation/guava-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/guava/v10_0/GuavaListenableFutureInstrumentation.java b/instrumentation/guava-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/guava/v10_0/GuavaListenableFutureInstrumentation.java index 77e6b136a22f..8025ec3f552c 100644 --- a/instrumentation/guava-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/guava/v10_0/GuavaListenableFutureInstrumentation.java +++ b/instrumentation/guava-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/guava/v10_0/GuavaListenableFutureInstrumentation.java @@ -61,8 +61,12 @@ public static PropagatedContext addListenerEnter(@Advice.Argument(0) Runnable ta @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void addListenerExit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(0) Runnable task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(Runnable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } } diff --git a/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/JettyQueuedThreadPoolInstrumentation.java b/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/JettyQueuedThreadPoolInstrumentation.java index 5edcf93ee6c3..b621a8e03d9d 100644 --- a/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/JettyQueuedThreadPoolInstrumentation.java +++ b/instrumentation/jetty/jetty-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jetty/v8_0/JettyQueuedThreadPoolInstrumentation.java @@ -50,8 +50,12 @@ public static PropagatedContext enterJobSubmit(@Advice.Argument(0) Runnable task @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitJobSubmit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(0) Runnable task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(Runnable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } } diff --git a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/DispatcherInstrumentation.java b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/DispatcherInstrumentation.java index 949a84cf64dc..e6a74a2d1ae4 100644 --- a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/DispatcherInstrumentation.java +++ b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/DispatcherInstrumentation.java @@ -48,8 +48,12 @@ public static PropagatedContext onEnter(@Advice.Argument(0) Runnable call) { @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void onExit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(0) Runnable call, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(Runnable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, call); } } } diff --git a/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3DispatcherInstrumentation.java b/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3DispatcherInstrumentation.java index 242b0340fa2c..20a7e70195d2 100644 --- a/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3DispatcherInstrumentation.java +++ b/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3DispatcherInstrumentation.java @@ -51,8 +51,12 @@ public static PropagatedContext onEnter(@Advice.Argument(0) Runnable call) { @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void onExit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(0) Runnable call, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(Runnable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, call); } } } diff --git a/instrumentation/pekko/pekko-actor-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pekkoactor/v1_0/PekkoDefaultSystemMessageQueueInstrumentation.java b/instrumentation/pekko/pekko-actor-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pekkoactor/v1_0/PekkoDefaultSystemMessageQueueInstrumentation.java index 226eec53ba83..ae070ca100d9 100644 --- a/instrumentation/pekko/pekko-actor-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pekkoactor/v1_0/PekkoDefaultSystemMessageQueueInstrumentation.java +++ b/instrumentation/pekko/pekko-actor-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pekkoactor/v1_0/PekkoDefaultSystemMessageQueueInstrumentation.java @@ -58,8 +58,13 @@ public static PropagatedContext enter(@Advice.Argument(1) SystemMessage systemMe @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(1) SystemMessage systemMessage, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(SystemMessage.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit( + propagatedContext, throwable, virtualField, systemMessage); } } } diff --git a/instrumentation/pekko/pekko-actor-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pekkoactor/v1_0/PekkoDispatcherInstrumentation.java b/instrumentation/pekko/pekko-actor-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pekkoactor/v1_0/PekkoDispatcherInstrumentation.java index 08201220dbfa..d5eedad4209e 100644 --- a/instrumentation/pekko/pekko-actor-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pekkoactor/v1_0/PekkoDispatcherInstrumentation.java +++ b/instrumentation/pekko/pekko-actor-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pekkoactor/v1_0/PekkoDispatcherInstrumentation.java @@ -52,8 +52,12 @@ public static PropagatedContext enterDispatch(@Advice.Argument(1) Envelope envel @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitDispatch( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(1) Envelope envelope, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(Envelope.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, envelope); } } } diff --git a/instrumentation/scala-fork-join-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinPoolInstrumentation.java b/instrumentation/scala-fork-join-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinPoolInstrumentation.java index 04ced8953b46..688e53dbe401 100644 --- a/instrumentation/scala-fork-join-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinPoolInstrumentation.java +++ b/instrumentation/scala-fork-join-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/scalaexecutors/ScalaForkJoinPoolInstrumentation.java @@ -53,8 +53,12 @@ public static PropagatedContext enterJobSubmit(@Advice.Argument(0) ForkJoinTask< @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitJobSubmit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(0) ForkJoinTask task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField, PropagatedContext> virtualField = + VirtualField.find(ForkJoinTask.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } } diff --git a/instrumentation/spring/spring-core-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/core/v2_0/SimpleAsyncTaskExecutorInstrumentation.java b/instrumentation/spring/spring-core-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/core/v2_0/SimpleAsyncTaskExecutorInstrumentation.java index 8f46873404d4..96e1bbf0af4a 100644 --- a/instrumentation/spring/spring-core-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/core/v2_0/SimpleAsyncTaskExecutorInstrumentation.java +++ b/instrumentation/spring/spring-core-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/core/v2_0/SimpleAsyncTaskExecutorInstrumentation.java @@ -56,8 +56,12 @@ public static PropagatedContext enterJobSubmit(@Advice.Argument(0) Runnable task @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitJobSubmit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(0) Runnable task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(Runnable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } } diff --git a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/HttpServerExchangeInstrumentation.java b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/HttpServerExchangeInstrumentation.java index 421bb924b730..a0485b40a706 100644 --- a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/HttpServerExchangeInstrumentation.java +++ b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/HttpServerExchangeInstrumentation.java @@ -50,8 +50,12 @@ public static PropagatedContext enterJobSubmit(@Advice.Argument(1) Runnable task @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) public static void exitJobSubmit( - @Advice.Enter PropagatedContext propagatedContext, @Advice.Thrown Throwable throwable) { - ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable); + @Advice.Argument(1) Runnable task, + @Advice.Enter PropagatedContext propagatedContext, + @Advice.Thrown Throwable throwable) { + VirtualField virtualField = + VirtualField.find(Runnable.class, PropagatedContext.class); + ExecutorAdviceHelper.cleanUpAfterSubmit(propagatedContext, throwable, virtualField, task); } } }