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()

instrumentation/grpc-1.6/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/grpc/v1_6/NettyHttp2HeadersInstrumentationModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
import io.grpc.Metadata;
2626
import io.netty.handler.codec.http2.Http2Headers;
2727
import io.opentelemetry.api.trace.Span;
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 io.opentelemetry.javaagent.instrumentation.hypertrace.grpc.GrpcSemanticAttributes;
3333
import java.util.ArrayList;
3434
import java.util.Arrays;

instrumentation/grpc-shaded-netty-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/shaded/netty/ShadedNettyUtilsInstrumentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
import io.grpc.Metadata;
2525
import io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Headers;
2626
import io.opentelemetry.api.trace.Span;
27+
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
2728
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
2829
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
29-
import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge;
3030
import io.opentelemetry.javaagent.instrumentation.shaded.netty.utils.NettyUtils;
3131
import net.bytebuddy.asm.Advice;
3232
import net.bytebuddy.description.type.TypeDescription;

instrumentation/java-streams/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ afterEvaluate{
2222
val versions: Map<String, String> by extra
2323

2424
dependencies {
25+
implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:${versions["opentelemetry"]}")
2526
testImplementation(testFixtures(project(":testing-common")))
2627
testImplementation("io.opentelemetry.javaagent:opentelemetry-muzzle:${versions["opentelemetry_java_agent"]}")
2728
}

instrumentation/java-streams/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/java/inputstream/InputStreamInstrumentationModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
2727

2828
import com.google.auto.service.AutoService;
29-
import io.opentelemetry.instrumentation.api.field.VirtualField;
29+
import io.opentelemetry.instrumentation.api.util.VirtualField;
3030
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
3131
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
3232
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;

instrumentation/java-streams/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/java/inputstream/InputStreamUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import io.opentelemetry.api.trace.Span;
2222
import io.opentelemetry.api.trace.Tracer;
2323
import io.opentelemetry.context.Context;
24-
import io.opentelemetry.instrumentation.api.field.VirtualField;
24+
import io.opentelemetry.instrumentation.api.util.VirtualField;
2525
import java.io.ByteArrayOutputStream;
2626
import java.io.IOException;
2727
import java.io.InputStream;

instrumentation/java-streams/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/java/outputstream/OutputStreamInstrumentationModule.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
2525

2626
import com.google.auto.service.AutoService;
27-
import io.opentelemetry.instrumentation.api.field.VirtualField;
27+
import io.opentelemetry.instrumentation.api.util.VirtualField;
2828
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
2929
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
3030
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
@@ -40,10 +40,10 @@
4040

4141
/**
4242
* {@link OutputStream} instrumentation. The type matcher applies to all implementations. However
43-
* only streams that are in the {@link io.opentelemetry.instrumentation.api.field.VirtualField} are
43+
* only streams that are in the {@link io.opentelemetry.instrumentation.api.util.VirtualField} are
4444
* instrumented, otherwise the instrumentation is noop.
4545
*
46-
* <p>If the stream is in the {@link io.opentelemetry.instrumentation.api.field.VirtualField} then
46+
* <p>If the stream is in the {@link io.opentelemetry.instrumentation.api.util.VirtualField} then
4747
* arguments to write methods are also passed to the buffered stream (value) from the map. The
4848
* buffered stream is then used by other instrumentations to capture body.
4949
*/

instrumentation/java-streams/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/java/ContextAccessorInstrumentationModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import static net.bytebuddy.matcher.ElementMatchers.named;
2121
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
2222

23-
import io.opentelemetry.instrumentation.api.field.VirtualField;
23+
import io.opentelemetry.instrumentation.api.util.VirtualField;
2424
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
2525
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
2626
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;

instrumentation/jaxrs-client-2.0/build.gradle.kts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,27 @@ val versions: Map<String, String> by extra
3232

3333
dependencies {
3434
api(project(":instrumentation:java-streams"))
35-
testImplementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-jaxrs-client-2.0-common:${versions["opentelemetry_java_agent_jaxrs"]}")
35+
api("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-http-url-connection:1.24.0-alpha")
3636

3737
compileOnly("javax.ws.rs:javax.ws.rs-api:2.0.1")
3838

39-
testImplementation(testFixtures(project(":testing-common")))
39+
testImplementation(testFixtures(project(":testing-common")))
4040
testImplementation("org.glassfish.jersey.core:jersey-client:2.27")
4141
testImplementation("org.glassfish.jersey.inject:jersey-hk2:2.27")
4242
testImplementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-semconv:${versions["opentelemetry_semconv"]}")
43+
44+
testImplementation(project(":instrumentation:apache-httpclient-4.0"))
45+
testImplementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-apache-httpclient-4.0:${versions["opentelemetry_java_agent"]}")
46+
testImplementation("org.jboss.resteasy:resteasy-client:3.0.5.Final")
47+
// ^ This version has timeouts https://issues.redhat.com/browse/RESTEASY-975
48+
testImplementation("org.apache.cxf:cxf-rt-rs-client:3.1.0")
49+
// Doesn't work with CXF 3.0.x because their context is wrong:
50+
// https://github.com/apache/cxf/commit/335c7bad2436f08d6d54180212df5a52157c9f21
51+
52+
testImplementation("javax.xml.bind:jaxb-api:2.2.3")
53+
54+
testImplementation("org.glassfish.jersey.inject:jersey-hk2:2.+")
55+
testImplementation("org.glassfish.jersey.core:jersey-client:2.+")
56+
testImplementation("org.jboss.resteasy:resteasy-client:3.0.26.Final")
57+
testImplementation("org.apache.cxf:cxf-rt-rs-client:3.+")
4358
}

0 commit comments

Comments
 (0)