Skip to content

Commit 6bb2be2

Browse files
authored
upgrade otel version to 1.24 (#378)
* upgrade otel version to 1.24 * comment some failing tests, and try to build the agent jar * fix classloading issues * remove jaxrs instrumentation * nit * try to fix muzzle and smoke tests * fix/update smoke tests * temp: Upgrade otel smoketest (#381) * fix tomee test * fix Play test * fix liberty test * add sock host port as well * fix grpc test * fix spring boot tests * format * fix wildify test
1 parent 084f250 commit 6bb2be2

File tree

84 files changed

+276
-564
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+276
-564
lines changed

build.gradle.kts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,16 @@ subprojects {
4040
extra.set("versions", mapOf(
4141
// when updating these values, some values must also be updated in buildSrc as this map
4242
// cannot be accessed there
43-
// 7/23/22 version 1.11.1-alpha is specified for opentelemetry_java_agent_jaxrs
44-
// gradle can't seem to load a more current version than that
45-
"opentelemetry" to "1.13.0",
46-
"opentelemetry_semconv" to "1.13.0-alpha",
43+
"opentelemetry" to "1.24.0",
44+
"opentelemetry_semconv" to "1.24.0-alpha",
4745
"opentelemetry_proto" to "0.11.0-alpha",
48-
"opentelemetry_java_agent" to "1.13.1-alpha",
49-
"opentelemetry_java_agent_all" to "1.13.1",
50-
"opentelemetry_java_agent_jaxrs" to "1.11.1-alpha",
51-
"opentelemetry_java_agent_netty" to "1.13.1-alpha",
52-
"opentelemetry_java_agent-tooling" to "1.13.1-alpha",
46+
"opentelemetry_java_agent" to "1.24.0-alpha",
47+
"opentelemetry_java_agent_all" to "1.24.0",
48+
"opentelemetry_java_agent-tooling" to "1.24.0-alpha",
5349

54-
"opentelemetry_gradle_plugin" to "1.16.0-alpha",
50+
"opentelemetry_gradle_plugin" to "1.24.0-alpha",
5551
"byte_buddy" to "1.12.10",
56-
"slf4j" to "1.7.32"
52+
"slf4j" to "2.0.7"
5753
))
5854

5955
apply<JavaPlugin>()

buildSrc/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ repositories {
2727
dependencies {
2828
implementation(gradleApi())
2929
implementation(localGroovy())
30-
val otelInstrumentationVersion = "1.13.0-alpha"
30+
val otelInstrumentationVersion = "1.24.0-alpha"
3131
implementation("io.opentelemetry.javaagent:opentelemetry-muzzle:$otelInstrumentationVersion")
3232
implementation("io.opentelemetry.instrumentation.muzzle-generation:io.opentelemetry.instrumentation.muzzle-generation.gradle.plugin:$otelInstrumentationVersion")
3333
implementation("io.opentelemetry.instrumentation.muzzle-check:io.opentelemetry.instrumentation.muzzle-check.gradle.plugin:$otelInstrumentationVersion")

buildSrc/src/main/groovy/MuzzlePlugin.groovy

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class MuzzlePlugin implements Plugin<Project> {
8989
project.getLogger().info('No muzzle pass directives configured. Asserting pass against instrumentation compile-time dependencies')
9090
ClassLoader userCL = createCompileDepsClassLoader(project, bootstrapProject)
9191
ClassLoader instrumentationCL = createInstrumentationClassloader(project, toolingProject)
92-
MuzzleGradlePluginUtil.@Companion.assertInstrumentationMuzzled(instrumentationCL, userCL, true)
92+
MuzzleGradlePluginUtil.@Companion.assertInstrumentationMuzzled(instrumentationCL, userCL, muzzleDirective.excludedInstrumentationNames, true)
9393
}
9494
println "Muzzle executing for $project"
9595
}
@@ -276,6 +276,7 @@ class MuzzlePlugin implements Plugin<Project> {
276276
inverseDirective.versions = version
277277
inverseDirective.assertPass = !muzzleDirective.assertPass
278278
inverseDirectives.add(inverseDirective)
279+
inverseDirective.excludedInstrumentationNames.addAll(muzzleDirective.excludedInstrumentationNames)
279280
}
280281

281282
return inverseDirectives
@@ -393,7 +394,7 @@ class MuzzlePlugin implements Plugin<Project> {
393394
}
394395
ClassLoader userCL = createClassLoaderForTask(instrumentationProject, bootstrapProject, taskName, shadowMuzzleArchiveFile)
395396
try {
396-
MuzzleGradlePluginUtil.@Companion.assertInstrumentationMuzzled(instrumentationCL, userCL, muzzleDirective.assertPass)
397+
MuzzleGradlePluginUtil.@Companion.assertInstrumentationMuzzled(instrumentationCL, userCL, muzzleDirective.excludedInstrumentationNames, muzzleDirective.assertPass)
397398
} finally {
398399
Thread.currentThread().contextClassLoader = ccl
399400
}
@@ -457,6 +458,7 @@ class MuzzleDirective {
457458
String versions
458459
Set<String> skipVersions = new HashSet<>()
459460
List<String> additionalDependencies = new ArrayList<>()
461+
Set<String> excludedInstrumentationNames = new HashSet<>()
460462
boolean assertPass
461463
boolean assertInverse = false
462464
boolean coreJdk = false
@@ -474,6 +476,10 @@ class MuzzleDirective {
474476
additionalDependencies.add(compileString)
475477
}
476478

479+
void excludeInstrumentationName(String excludedInstName) {
480+
excludedInstrumentationNames.add(excludedInstName)
481+
}
482+
477483
/**
478484
* Slug of directive name.
479485
*

buildSrc/src/main/java/io/opentelemetry/instrumentation/gradle/AutoInstrumentationPlugin.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ private void addDependencies(Project project) {
6464
"io.opentelemetry.javaagent:opentelemetry-javaagent-extension-api:" + versions
6565
.get("opentelemetry_java_agent"));
6666
dependencies.add("implementation",
67-
"io.opentelemetry.javaagent:opentelemetry-javaagent-instrumentation-api:" + versions
68-
.get("opentelemetry_java_agent"));
67+
"io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:" + versions
68+
.get("opentelemetry"));
6969
dependencies.add("implementation",
7070
"io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:" + versions
71-
.get("opentelemetry_java_agent"));
71+
.get("opentelemetry"));
7272

7373
dependencies.add("implementation", dependencies.project(Map.of("path", ":javaagent-core")));
7474
dependencies.add("implementation", dependencies.project(Map.of("path", ":filter-api")));

filter-api/src/main/java/org/hypertrace/agent/filter/FilterRegistry.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,11 @@ public static Filter getFilter() {
5555
if (filter == null) {
5656
try {
5757
FilterProviderConfig providerConfig = new FilterProviderConfig();
58-
filter = load(providerConfig, Collections.emptyList());
58+
filter =
59+
load(
60+
providerConfig,
61+
Collections.emptyList(),
62+
Thread.currentThread().getContextClassLoader());
5963
} catch (Throwable t) {
6064
logger.error("Throwable thrown while loading filter jars", t);
6165
}
@@ -72,17 +76,19 @@ public static Filter getFilter() {
7276
* @param providerConfig config needed by the filter (Eg. service name)
7377
* @param jarPaths paths to filter jar files.
7478
*/
75-
public static void initialize(FilterProviderConfig providerConfig, List<String> jarPaths) {
79+
public static void initialize(
80+
FilterProviderConfig providerConfig, List<String> jarPaths, ClassLoader cl) {
7681
try {
77-
filter = load(providerConfig, jarPaths);
82+
filter = load(providerConfig, jarPaths, cl);
7883
} catch (Throwable t) {
7984
logger.error("Throwable thrown while loading filter jars", t);
8085
}
8186
}
8287

83-
private static Filter load(FilterProviderConfig providerConfig, List<String> jarPaths) {
84-
ClassLoader cl = loadJars(jarPaths);
85-
ServiceLoader<FilterProvider> providers = ServiceLoader.load(FilterProvider.class, cl);
88+
private static Filter load(
89+
FilterProviderConfig providerConfig, List<String> jarPaths, ClassLoader cl) {
90+
ClassLoader newCl = loadJars(jarPaths, cl);
91+
ServiceLoader<FilterProvider> providers = ServiceLoader.load(FilterProvider.class, newCl);
8692
List<Filter> filters = new ArrayList<>();
8793

8894
for (FilterProvider provider : providers) {
@@ -100,7 +106,7 @@ private static Filter load(FilterProviderConfig providerConfig, List<String> jar
100106
return new MultiFilter(filters);
101107
}
102108

103-
private static ClassLoader loadJars(List<String> jarPaths) {
109+
private static ClassLoader loadJars(List<String> jarPaths, ClassLoader cl) {
104110
URL[] urls = new URL[jarPaths.size()];
105111
int i = 0;
106112
for (String jarPath : jarPaths) {
@@ -112,7 +118,7 @@ private static ClassLoader loadJars(List<String> jarPaths) {
112118
logger.warn(String.format("Malformed URL exception for jar on path: %s", jarPath), e);
113119
}
114120
}
115-
return new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());
121+
return new URLClassLoader(urls, cl);
116122
}
117123

118124
public static String getProviderDisabledPropertyName(Class<?> clazz) {

gradle/java.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ ext {
5151
],
5252
groovy : "org.codehaus.groovy:groovy-all:2.5.11",
5353
testLogging: [
54-
dependencies.create(group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'),
55-
dependencies.create(group: 'org.slf4j', name: 'log4j-over-slf4j', version: '1.7.30'),
56-
dependencies.create(group: 'org.slf4j', name: 'jcl-over-slf4j', version: '1.7.30'),
57-
dependencies.create(group: 'org.slf4j', name: 'jul-to-slf4j', version: '1.7.30'),
54+
dependencies.create(group: 'ch.qos.logback', name: 'logback-classic', version: '1.4.6'),
55+
dependencies.create(group: 'org.slf4j', name: 'log4j-over-slf4j', version: '2.0.7'),
56+
dependencies.create(group: 'org.slf4j', name: 'jcl-over-slf4j', version: '2.0.7'),
57+
dependencies.create(group: 'org.slf4j', name: 'jul-to-slf4j', version: '2.0.7'),
5858
]
5959
]
6060
}

instrumentation/apache-httpasyncclient-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/apachehttpasyncclient/ApacheAsyncClientInstrumentationModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
package io.opentelemetry.javaagent.instrumentation.hypertrace.apachehttpasyncclient;
1818

19+
import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
1920
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
2021
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
21-
import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext;
2222
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
2323
import static net.bytebuddy.matcher.ElementMatchers.named;
2424
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;

instrumentation/apache-httpclient-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/apachehttpclient/v4_0/ApacheClientInstrumentationModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
2626

2727
import com.google.auto.service.AutoService;
28+
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
2829
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
2930
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
3031
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
31-
import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge;
3232
import java.util.Arrays;
3333
import java.util.List;
3434
import net.bytebuddy.asm.Advice;

instrumentation/apache-httpclient-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/apachehttpclient/v4_0/HttpEntityInstrumentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
2424
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
2525

26-
import io.opentelemetry.instrumentation.api.field.VirtualField;
26+
import io.opentelemetry.instrumentation.api.util.VirtualField;
2727
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
2828
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
2929
import io.opentelemetry.javaagent.instrumentation.hypertrace.apachehttpclient.v4_0.ApacheHttpClientObjectRegistry.SpanAndAttributeKey;

instrumentation/build.gradle.kts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,15 @@ tasks {
2626
// Keep in sync with https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/f893ca540b72a895fbf18c14d2df8d1cabaf2c7f/instrumentation/instrumentation.gradle#L51
2727
shadowJar {
2828
dependencies{
29-
// exclude core, it lives in the bootstrap classloader
29+
// exclude packages that live in the bootstrap classloader
3030
exclude(project(":javaagent-core"))
31+
exclude(project(":filter-api"))
32+
exclude("io/opentelemetry/semconv/**")
33+
exclude("io/opentelemetry/context/**")
34+
exclude(dependency("io.opentelemetry:opentelemetry-api"))
35+
exclude("io/opentelemetry/instrumentation/api/**")
36+
// exclude bootstrap part of javaagent-extension-api
37+
exclude("io/opentelemetry/javaagent/bootstrap/**")
3138
}
3239

3340
mergeServiceFiles()

0 commit comments

Comments
 (0)