Skip to content

Commit 09f6553

Browse files
authored
⬆️ upgrade otel 1.6 (#347)
* ⬆️ upgrade to 1.6.0 snapshot release * ➕ add grpc to smoke tests * ⬆️ upgrade sdk to 1.6.0 * ➕ add missing otel sdk dependency * ♻️ update for breaking API changes * ⬆️ upgrade to non snapshot release * ⬆️ upgrade otel patch version * ➕ add grpc runtime dependencies for smoke test app * 🐛 save context in property for access/removal in entity interceptor * ⚗️ disable client pipeline replacement' * 🐛 fix bug with incorrect tracing handler name in replacement * ⬆️ upgrade dependencies
1 parent 5dace0d commit 09f6553

File tree

8 files changed

+27
-12
lines changed

8 files changed

+27
-12
lines changed

build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ subprojects {
3232
description = "Hypertrace OpenTelemetry Javaagent"
3333

3434
extra.set("versions", mapOf(
35-
"opentelemetry" to "1.5.0",
36-
"opentelemetry_java_agent" to "1.5.3-alpha",
37-
"opentelemetry_java_agent_all" to "1.5.3",
35+
"opentelemetry" to "1.6.0",
36+
"opentelemetry_java_agent" to "1.6.2-alpha",
37+
"opentelemetry_java_agent_all" to "1.6.2",
3838
"byte_buddy" to "1.11.2",
3939
"slf4j" to "1.7.30"
4040
))
@@ -47,7 +47,7 @@ subprojects {
4747
mavenCentral()
4848
jcenter()
4949
maven {
50-
url = uri("https://oss.jfrog.org/artifactory/oss-snapshot-local")
50+
url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
5151
}
5252
}
5353

instrumentation/jaxrs-client-2.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/jaxrs/v2_0/JaxrsClientBodyCaptureFilter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,20 @@ public class JaxrsClientBodyCaptureFilter implements ClientRequestFilter, Client
3939
InstrumentationConfig.ConfigProvider.get();
4040
/** TODO find a better way to access this */
4141
public static final String OTEL_CONTEXT_PROPERTY_NAME = "io.opentelemetry.javaagent.context";
42+
/**
43+
* In certain contexts, like reading HTTP client entities, the body will be read after the OTEL
44+
* context has been removed from the carrier. In order to mitigate this, we re-store a reference
45+
* to the object under a different property key and remove it when it is no longer needed
46+
*/
47+
public static final String HYPERTRACE_CONTEXT_PROPERTY_NAME = "org.hypertrace.javaagent.context";
4248

4349
@Override
4450
public void filter(ClientRequestContext requestContext) {
4551
Object contextObj = requestContext.getProperty(OTEL_CONTEXT_PROPERTY_NAME);
4652
if (!(contextObj instanceof Context)) {
4753
return;
4854
}
55+
requestContext.setProperty(HYPERTRACE_CONTEXT_PROPERTY_NAME, contextObj);
4956

5057
Context currentContext = (Context) contextObj;
5158
Span currentSpan = Span.fromContext(currentContext);

instrumentation/jaxrs-client-2.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/jaxrs/v2_0/JaxrsClientEntityInterceptor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ public JaxrsClientEntityInterceptor(
6161
@Override
6262
public Object aroundReadFrom(ReaderInterceptorContext responseContext)
6363
throws IOException, WebApplicationException {
64+
Object contextObj =
65+
responseContext.getProperty(JaxrsClientBodyCaptureFilter.HYPERTRACE_CONTEXT_PROPERTY_NAME);
66+
responseContext.removeProperty(JaxrsClientBodyCaptureFilter.HYPERTRACE_CONTEXT_PROPERTY_NAME);
6467

6568
MediaType mediaType = responseContext.getMediaType();
6669
if (mediaType == null
@@ -69,8 +72,6 @@ public Object aroundReadFrom(ReaderInterceptorContext responseContext)
6972
return responseContext.proceed();
7073
}
7174

72-
Object contextObj =
73-
responseContext.getProperty(JaxrsClientBodyCaptureFilter.OTEL_CONTEXT_PROPERTY_NAME);
7475
if (!(contextObj instanceof Context)) {
7576
log.error(
7677
"Span object is not present in the context properties, response object will not be captured");

instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/NettyChannelPipelineInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ public static void addHandler(
146146
// add OTEL request handler to start spans
147147
pipeline.addAfter(
148148
HttpClientTracingHandler.class.getName(),
149-
io.opentelemetry.javaagent.instrumentation.netty.v4_1.client
150-
.HttpClientRequestTracingHandler.class
149+
io.opentelemetry.javaagent.instrumentation.netty.v4_1.client.HttpClientTracingHandler
150+
.class
151151
.getName(),
152152
new io.opentelemetry.javaagent.instrumentation.netty.v4_1.client
153153
.HttpClientRequestTracingHandler());

otel-extensions/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
}
88

99

10-
val protobufVersion = "3.15.8"
10+
val protobufVersion = "3.16.1"
1111

1212
protobuf {
1313
protoc {
@@ -31,6 +31,8 @@ dependencies {
3131

3232
compileOnly("io.opentelemetry:opentelemetry-sdk:${versions["opentelemetry"]}")
3333
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${versions["opentelemetry"]}-alpha")
34+
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:${versions["opentelemetry"]}-alpha")
35+
3436
implementation("io.opentelemetry:opentelemetry-semconv:${versions["opentelemetry"]}-alpha")
3537
implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-extension-api:${versions["opentelemetry_java_agent"]}")
3638
implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:${versions["opentelemetry_java_agent"]}")

otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/HypertraceResourceProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import com.google.auto.service.AutoService;
2020
import io.opentelemetry.api.common.Attributes;
2121
import io.opentelemetry.api.common.AttributesBuilder;
22-
import io.opentelemetry.sdk.autoconfigure.ConfigProperties;
22+
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
2323
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
2424
import io.opentelemetry.sdk.resources.Resource;
2525
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;

otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/processor/HypertraceTracerCustomizer.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
package org.hypertrace.agent.otel.extensions.processor;
1818

1919
import com.google.auto.service.AutoService;
20-
import io.opentelemetry.sdk.autoconfigure.spi.SdkTracerProviderConfigurer;
20+
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
21+
import io.opentelemetry.sdk.autoconfigure.spi.traces.SdkTracerProviderConfigurer;
2122
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
2223

2324
/**
@@ -32,7 +33,8 @@
3233
public class HypertraceTracerCustomizer implements SdkTracerProviderConfigurer {
3334

3435
@Override
35-
public void configure(SdkTracerProviderBuilder tracerProvider) {
36+
public void configure(
37+
SdkTracerProviderBuilder tracerProvider, ConfigProperties configProperties) {
3638
tracerProvider.addSpanProcessor(new AddTagsSpanProcessor());
3739
}
3840
}

smoke-tests/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ dependencies{
1616
testImplementation("com.squareup.okhttp3:okhttp:4.9.0")
1717
testImplementation("org.awaitility:awaitility:4.0.3")
1818
testImplementation("io.opentelemetry:opentelemetry-proto:${versions["opentelemetry"]}-alpha")
19+
testImplementation("io.grpc:grpc-core:1.36.1") // needed at runtime to send gRPC requests to the gRPC app
1920
testRuntimeOnly("io.grpc:grpc-netty-shaded:1.36.1") // needed at runtime to send gRPC requests to the gRPC app
21+
testRuntimeOnly("io.grpc:grpc-stub:1.36.1") // needed at runtime to send gRPC requests to the gRPC app
22+
testRuntimeOnly("io.grpc:grpc-protobuf:1.36.1") // needed at runtime to send gRPC requests to the gRPC app
2023
testImplementation("io.opentelemetry:opentelemetry-sdk:${versions["opentelemetry"]}")
2124
testImplementation("com.google.protobuf:protobuf-java-util:3.15.8")
2225
testImplementation("org.spockframework:spock-core:1.3-groovy-2.5")

0 commit comments

Comments
 (0)