Browse Source

Add context propagation debug info in ContextPropagatingRunnable (#9339)

Lauri Tulmin 1 year ago
parent
commit
57e957d7a0

+ 9 - 0
instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ContextPropagationDebug.java

@@ -56,6 +56,15 @@ public final class ContextPropagationDebug {
     return THREAD_PROPAGATION_DEBUGGER;
   }
 
+  public static Context addDebugInfo(Context context, Object carrier) {
+    if (ContextPropagationDebug.isThreadPropagationDebuggerEnabled()) {
+      context =
+          ContextPropagationDebug.appendLocations(
+              context, new Exception().getStackTrace(), carrier);
+    }
+    return context;
+  }
+
   public static Context appendLocations(
       Context context, StackTraceElement[] locations, Object carrier) {
     ContextPropagationDebug propagationDebug = ContextPropagationDebug.getPropagations(context);

+ 2 - 1
instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/ContextPropagatingRunnable.java

@@ -7,6 +7,7 @@ package io.opentelemetry.javaagent.bootstrap.executors;
 
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
+import io.opentelemetry.instrumentation.api.internal.ContextPropagationDebug;
 
 public final class ContextPropagatingRunnable implements Runnable {
 
@@ -27,7 +28,7 @@ public final class ContextPropagatingRunnable implements Runnable {
 
   private ContextPropagatingRunnable(Runnable delegate, Context context) {
     this.delegate = delegate;
-    this.context = context;
+    this.context = ContextPropagationDebug.addDebugInfo(context, delegate);
   }
 
   @Override

+ 1 - 4
instrumentation/executors/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/executors/ExecutorAdviceHelper.java

@@ -62,10 +62,7 @@ public final class ExecutorAdviceHelper {
       }
     }
 
-    if (ContextPropagationDebug.isThreadPropagationDebuggerEnabled()) {
-      context =
-          ContextPropagationDebug.appendLocations(context, new Exception().getStackTrace(), task);
-    }
+    context = ContextPropagationDebug.addDebugInfo(context, task);
     propagatedContext.setContext(context);
     return propagatedContext;
   }