Skip to content

Commit 9dd11ff

Browse files
authored
Make OpenTelemetry-API Bridge and dependent instrumentations work with indy (#11578)
1 parent 4b03e98 commit 9dd11ff

File tree

21 files changed

+213
-91
lines changed

21 files changed

+213
-91
lines changed

instrumentation/kotlinx-coroutines/kotlinx-coroutines-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationModule.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
import com.google.auto.service.AutoService;
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1314
import java.util.List;
1415

1516
@AutoService(InstrumentationModule.class)
16-
public class KotlinCoroutinesInstrumentationModule extends InstrumentationModule {
17+
public class KotlinCoroutinesInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1719

1820
public KotlinCoroutinesInstrumentationModule() {
1921
super("kotlinx-coroutines");
@@ -25,12 +27,9 @@ public boolean isHelperClass(String className) {
2527
}
2628

2729
@Override
28-
public boolean isIndyModule() {
29-
// java.lang.LinkageError: bad method type alias: (CoroutineContext)Object[] not visible from
30-
// class
31-
// io.opentelemetry.javaagent.instrumentation.kotlinxcoroutines.KotlinCoroutinesInstrumentation$ContextAdvice
32-
// CoroutineContext is loaded from agent class loader not application
33-
return false;
30+
public String getModuleGroup() {
31+
// This module uses the api context bridge helpers, therefore must be in the same classloader
32+
return "opentelemetry-api-bridge";
3433
}
3534

3635
@Override

instrumentation/opentelemetry-api/opentelemetry-api-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/OpenTelemetryApiInstrumentationModule.java

+17-6
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,17 @@
1010
import com.google.auto.service.AutoService;
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
14+
import java.util.Collections;
1315
import java.util.List;
1416

1517
@AutoService(InstrumentationModule.class)
16-
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule {
18+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
19+
implements ExperimentalInstrumentationModule {
1720
public OpenTelemetryApiInstrumentationModule() {
1821
super("opentelemetry-api", "opentelemetry-api-1.0");
1922
}
2023

21-
@Override
22-
public boolean isIndyModule() {
23-
return false;
24-
}
25-
2624
@Override
2725
public List<TypeInstrumentation> typeInstrumentations() {
2826
return asList(
@@ -31,4 +29,17 @@ public List<TypeInstrumentation> typeInstrumentations() {
3129
new OpenTelemetryInstrumentation(),
3230
new SpanInstrumentation());
3331
}
32+
33+
@Override
34+
public String getModuleGroup() {
35+
return "opentelemetry-api-bridge";
36+
}
37+
38+
@Override
39+
public List<String> agentPackagesToHide() {
40+
// These are helper classes injected by api-version specific instrumentation modules
41+
// We don't want to fall back to accidentally trying to load those from the agent CL
42+
// when they haven't been injected
43+
return Collections.singletonList("io.opentelemetry.javaagent.instrumentation.opentelemetryapi");
44+
}
3445
}

instrumentation/opentelemetry-api/opentelemetry-api-1.10/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_10/OpenTelemetryApiInstrumentationModule.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,24 @@
1010
import com.google.auto.service.AutoService;
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1314
import java.util.List;
1415

1516
@AutoService(InstrumentationModule.class)
16-
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule {
17+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1719

1820
public OpenTelemetryApiInstrumentationModule() {
1921
super("opentelemetry-api", "opentelemetry-api-1.10");
2022
}
2123

2224
@Override
23-
public boolean isIndyModule() {
24-
return false;
25+
public List<TypeInstrumentation> typeInstrumentations() {
26+
return singletonList(new OpenTelemetryInstrumentation());
2527
}
2628

2729
@Override
28-
public List<TypeInstrumentation> typeInstrumentations() {
29-
return singletonList(new OpenTelemetryInstrumentation());
30+
public String getModuleGroup() {
31+
return "opentelemetry-api-bridge";
3032
}
3133
}

instrumentation/opentelemetry-api/opentelemetry-api-1.15/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_15/OpenTelemetryApiInstrumentationModule.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,23 @@
1010
import com.google.auto.service.AutoService;
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1314
import java.util.List;
1415

1516
@AutoService(InstrumentationModule.class)
16-
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule {
17+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1719
public OpenTelemetryApiInstrumentationModule() {
1820
super("opentelemetry-api", "opentelemetry-api-1.15");
1921
}
2022

2123
@Override
22-
public boolean isIndyModule() {
23-
return false;
24+
public List<TypeInstrumentation> typeInstrumentations() {
25+
return singletonList(new OpenTelemetryInstrumentation());
2426
}
2527

2628
@Override
27-
public List<TypeInstrumentation> typeInstrumentations() {
28-
return singletonList(new OpenTelemetryInstrumentation());
29+
public String getModuleGroup() {
30+
return "opentelemetry-api-bridge";
2931
}
3032
}

instrumentation/opentelemetry-api/opentelemetry-api-1.27/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_27/OpenTelemetryApiInstrumentationModule.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,23 @@
1010
import com.google.auto.service.AutoService;
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1314
import java.util.List;
1415

1516
@AutoService(InstrumentationModule.class)
16-
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule {
17+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1719
public OpenTelemetryApiInstrumentationModule() {
1820
super("opentelemetry-api", "opentelemetry-api-1.27");
1921
}
2022

2123
@Override
22-
public boolean isIndyModule() {
23-
return false;
24+
public List<TypeInstrumentation> typeInstrumentations() {
25+
return singletonList(new OpenTelemetryInstrumentation());
2426
}
2527

2628
@Override
27-
public List<TypeInstrumentation> typeInstrumentations() {
28-
return singletonList(new OpenTelemetryInstrumentation());
29+
public String getModuleGroup() {
30+
return "opentelemetry-api-bridge";
2931
}
3032
}

instrumentation/opentelemetry-api/opentelemetry-api-1.31/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_31/incubator/OpenTelemetryApiInstrumentationModule.java

+8-6
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,17 @@
1111
import com.google.auto.service.AutoService;
1212
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
14+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1415
import java.util.List;
1516
import net.bytebuddy.matcher.ElementMatcher;
1617

1718
@AutoService(InstrumentationModule.class)
18-
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule {
19+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
20+
implements ExperimentalInstrumentationModule {
1921
public OpenTelemetryApiInstrumentationModule() {
2022
super("opentelemetry-api", "opentelemetry-api-1.31", "opentelemetry-api-incubator-1.31");
2123
}
2224

23-
@Override
24-
public boolean isIndyModule() {
25-
return false;
26-
}
27-
2825
@Override
2926
public List<TypeInstrumentation> typeInstrumentations() {
3027
return singletonList(new OpenTelemetryInstrumentation());
@@ -35,4 +32,9 @@ public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
3532
return hasClassesNamed(
3633
"application.io.opentelemetry.extension.incubator.metrics.ExtendedDoubleHistogramBuilder");
3734
}
35+
36+
@Override
37+
public String getModuleGroup() {
38+
return "opentelemetry-api-bridge";
39+
}
3840
}

instrumentation/opentelemetry-api/opentelemetry-api-1.32/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_32/OpenTelemetryApiInstrumentationModule.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
import com.google.auto.service.AutoService;
1313
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
15+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1516
import java.util.List;
1617
import net.bytebuddy.matcher.ElementMatcher;
1718

1819
@AutoService(InstrumentationModule.class)
19-
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule {
20+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
21+
implements ExperimentalInstrumentationModule {
2022
public OpenTelemetryApiInstrumentationModule() {
2123
super("opentelemetry-api", "opentelemetry-api-1.32");
2224
}
@@ -31,12 +33,12 @@ public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
3133
}
3234

3335
@Override
34-
public boolean isIndyModule() {
35-
return false;
36+
public List<TypeInstrumentation> typeInstrumentations() {
37+
return singletonList(new OpenTelemetryInstrumentation());
3638
}
3739

3840
@Override
39-
public List<TypeInstrumentation> typeInstrumentations() {
40-
return singletonList(new OpenTelemetryInstrumentation());
41+
public String getModuleGroup() {
42+
return "opentelemetry-api-bridge";
4143
}
4244
}

instrumentation/opentelemetry-api/opentelemetry-api-1.32/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_32/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
import com.google.auto.service.AutoService;
1212
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
14+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1415
import java.util.List;
1516
import net.bytebuddy.matcher.ElementMatcher;
1617

1718
@AutoService(InstrumentationModule.class)
18-
public class OpenTelemetryApiIncubatorInstrumentationModule extends InstrumentationModule {
19+
public class OpenTelemetryApiIncubatorInstrumentationModule extends InstrumentationModule
20+
implements ExperimentalInstrumentationModule {
1921
public OpenTelemetryApiIncubatorInstrumentationModule() {
2022
super("opentelemetry-api", "opentelemetry-api-1.32", "opentelemetry-api-incubator-1.32");
2123
}
@@ -29,12 +31,12 @@ public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
2931
}
3032

3133
@Override
32-
public boolean isIndyModule() {
33-
return false;
34+
public List<TypeInstrumentation> typeInstrumentations() {
35+
return singletonList(new OpenTelemetryIncubatorInstrumentation());
3436
}
3537

3638
@Override
37-
public List<TypeInstrumentation> typeInstrumentations() {
38-
return singletonList(new OpenTelemetryIncubatorInstrumentation());
39+
public String getModuleGroup() {
40+
return "opentelemetry-api-bridge";
3941
}
4042
}

instrumentation/opentelemetry-api/opentelemetry-api-1.37/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_37/incubator/OpenTelemetryApiInstrumentationModule.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
import com.google.auto.service.AutoService;
1212
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
14+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1415
import java.util.List;
1516
import net.bytebuddy.matcher.ElementMatcher;
1617

1718
@AutoService(InstrumentationModule.class)
18-
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule {
19+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
20+
implements ExperimentalInstrumentationModule {
1921
public OpenTelemetryApiInstrumentationModule() {
2022
super("opentelemetry-api", "opentelemetry-api-1.37", "opentelemetry-api-incubator-1.37");
2123
}
@@ -27,12 +29,12 @@ public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
2729
}
2830

2931
@Override
30-
public boolean isIndyModule() {
31-
return false;
32+
public List<TypeInstrumentation> typeInstrumentations() {
33+
return singletonList(new OpenTelemetryInstrumentation());
3234
}
3335

3436
@Override
35-
public List<TypeInstrumentation> typeInstrumentations() {
36-
return singletonList(new OpenTelemetryInstrumentation());
37+
public String getModuleGroup() {
38+
return "opentelemetry-api-bridge";
3739
}
3840
}

instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/OpenTelemetryApiInstrumentationModule.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
import com.google.auto.service.AutoService;
1313
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
15+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1516
import java.util.List;
1617
import net.bytebuddy.matcher.ElementMatcher;
1718

1819
@AutoService(InstrumentationModule.class)
19-
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule {
20+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
21+
implements ExperimentalInstrumentationModule {
2022
public OpenTelemetryApiInstrumentationModule() {
2123
super("opentelemetry-api", "opentelemetry-api-1.38");
2224
}
@@ -31,12 +33,12 @@ public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
3133
}
3234

3335
@Override
34-
public boolean isIndyModule() {
35-
return false;
36+
public List<TypeInstrumentation> typeInstrumentations() {
37+
return singletonList(new OpenTelemetryInstrumentation());
3638
}
3739

3840
@Override
39-
public List<TypeInstrumentation> typeInstrumentations() {
40-
return singletonList(new OpenTelemetryInstrumentation());
41+
public String getModuleGroup() {
42+
return "opentelemetry-api-bridge";
4143
}
4244
}

instrumentation/opentelemetry-api/opentelemetry-api-1.38/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_38/incubator/OpenTelemetryApiIncubatorInstrumentationModule.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
import com.google.auto.service.AutoService;
1212
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
14+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1415
import java.util.List;
1516
import net.bytebuddy.matcher.ElementMatcher;
1617

1718
@AutoService(InstrumentationModule.class)
18-
public class OpenTelemetryApiIncubatorInstrumentationModule extends InstrumentationModule {
19+
public class OpenTelemetryApiIncubatorInstrumentationModule extends InstrumentationModule
20+
implements ExperimentalInstrumentationModule {
1921
public OpenTelemetryApiIncubatorInstrumentationModule() {
2022
super("opentelemetry-api", "opentelemetry-api-1.38", "opentelemetry-api-incubator-1.38");
2123
}
@@ -29,12 +31,12 @@ public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
2931
}
3032

3133
@Override
32-
public boolean isIndyModule() {
33-
return false;
34+
public List<TypeInstrumentation> typeInstrumentations() {
35+
return singletonList(new OpenTelemetryIncubatorInstrumentation());
3436
}
3537

3638
@Override
37-
public List<TypeInstrumentation> typeInstrumentations() {
38-
return singletonList(new OpenTelemetryIncubatorInstrumentation());
39+
public String getModuleGroup() {
40+
return "opentelemetry-api-bridge";
3941
}
4042
}

instrumentation/opentelemetry-api/opentelemetry-api-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/v1_4/OpenTelemetryApiInstrumentationModule.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,23 @@
1010
import com.google.auto.service.AutoService;
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1314
import java.util.List;
1415

1516
@AutoService(InstrumentationModule.class)
16-
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule {
17+
public class OpenTelemetryApiInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1719
public OpenTelemetryApiInstrumentationModule() {
1820
super("opentelemetry-api", "opentelemetry-api-1.4");
1921
}
2022

2123
@Override
22-
public boolean isIndyModule() {
23-
return false;
24+
public List<TypeInstrumentation> typeInstrumentations() {
25+
return singletonList(new OpenTelemetryInstrumentation());
2426
}
2527

2628
@Override
27-
public List<TypeInstrumentation> typeInstrumentations() {
28-
return singletonList(new OpenTelemetryInstrumentation());
29+
public String getModuleGroup() {
30+
return "opentelemetry-api-bridge";
2931
}
3032
}

0 commit comments

Comments
 (0)