Преглед изворни кода

Apply async end strategy to all kotlin coroutine flows (#11583)

Lauri Tulmin пре 9 месеци
родитељ
комит
c6afaed015

+ 9 - 2
instrumentation/kotlinx-coroutines/kotlinx-coroutines-flow-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/flow/AbstractFlowInstrumentation.java

@@ -5,8 +5,10 @@
 
 package io.opentelemetry.javaagent.instrumentation.kotlinxcoroutines.flow;
 
+import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
+import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
 import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
-import static net.bytebuddy.matcher.ElementMatchers.namedOneOf;
+import static net.bytebuddy.matcher.ElementMatchers.named;
 
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
@@ -16,9 +18,14 @@ import net.bytebuddy.matcher.ElementMatcher;
 
 public class AbstractFlowInstrumentation implements TypeInstrumentation {
 
+  @Override
+  public ElementMatcher<ClassLoader> classLoaderOptimization() {
+    return hasClassesNamed("kotlinx.coroutines.flow.Flow");
+  }
+
   @Override
   public ElementMatcher<TypeDescription> typeMatcher() {
-    return namedOneOf("kotlinx.coroutines.flow.AbstractFlow", "kotlinx.coroutines.flow.SafeFlow");
+    return implementsInterface(named("kotlinx.coroutines.flow.Flow"));
   }
 
   @Override