Skip to content

Commit

Permalink
⬆️ upgrade otel 1.6 (#347)
Browse files Browse the repository at this point in the history
* ⬆️ 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
  • Loading branch information
ryandens committed Jan 11, 2022
1 parent 5dace0d commit 09f6553
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 12 deletions.
8 changes: 4 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ subprojects {
description = "Hypertrace OpenTelemetry Javaagent"

extra.set("versions", mapOf(
"opentelemetry" to "1.5.0",
"opentelemetry_java_agent" to "1.5.3-alpha",
"opentelemetry_java_agent_all" to "1.5.3",
"opentelemetry" to "1.6.0",
"opentelemetry_java_agent" to "1.6.2-alpha",
"opentelemetry_java_agent_all" to "1.6.2",
"byte_buddy" to "1.11.2",
"slf4j" to "1.7.30"
))
Expand All @@ -47,7 +47,7 @@ subprojects {
mavenCentral()
jcenter()
maven {
url = uri("https://oss.jfrog.org/artifactory/oss-snapshot-local")
url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,20 @@ public class JaxrsClientBodyCaptureFilter implements ClientRequestFilter, Client
InstrumentationConfig.ConfigProvider.get();
/** TODO find a better way to access this */
public static final String OTEL_CONTEXT_PROPERTY_NAME = "io.opentelemetry.javaagent.context";
/**
* In certain contexts, like reading HTTP client entities, the body will be read after the OTEL
* context has been removed from the carrier. In order to mitigate this, we re-store a reference
* to the object under a different property key and remove it when it is no longer needed
*/
public static final String HYPERTRACE_CONTEXT_PROPERTY_NAME = "org.hypertrace.javaagent.context";

@Override
public void filter(ClientRequestContext requestContext) {
Object contextObj = requestContext.getProperty(OTEL_CONTEXT_PROPERTY_NAME);
if (!(contextObj instanceof Context)) {
return;
}
requestContext.setProperty(HYPERTRACE_CONTEXT_PROPERTY_NAME, contextObj);

Context currentContext = (Context) contextObj;
Span currentSpan = Span.fromContext(currentContext);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ public JaxrsClientEntityInterceptor(
@Override
public Object aroundReadFrom(ReaderInterceptorContext responseContext)
throws IOException, WebApplicationException {
Object contextObj =
responseContext.getProperty(JaxrsClientBodyCaptureFilter.HYPERTRACE_CONTEXT_PROPERTY_NAME);
responseContext.removeProperty(JaxrsClientBodyCaptureFilter.HYPERTRACE_CONTEXT_PROPERTY_NAME);

MediaType mediaType = responseContext.getMediaType();
if (mediaType == null
Expand All @@ -69,8 +72,6 @@ public Object aroundReadFrom(ReaderInterceptorContext responseContext)
return responseContext.proceed();
}

Object contextObj =
responseContext.getProperty(JaxrsClientBodyCaptureFilter.OTEL_CONTEXT_PROPERTY_NAME);
if (!(contextObj instanceof Context)) {
log.error(
"Span object is not present in the context properties, response object will not be captured");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ public static void addHandler(
// add OTEL request handler to start spans
pipeline.addAfter(
HttpClientTracingHandler.class.getName(),
io.opentelemetry.javaagent.instrumentation.netty.v4_1.client
.HttpClientRequestTracingHandler.class
io.opentelemetry.javaagent.instrumentation.netty.v4_1.client.HttpClientTracingHandler
.class
.getName(),
new io.opentelemetry.javaagent.instrumentation.netty.v4_1.client
.HttpClientRequestTracingHandler());
Expand Down
4 changes: 3 additions & 1 deletion otel-extensions/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {
}


val protobufVersion = "3.15.8"
val protobufVersion = "3.16.1"

protobuf {
protoc {
Expand All @@ -31,6 +31,8 @@ dependencies {

compileOnly("io.opentelemetry:opentelemetry-sdk:${versions["opentelemetry"]}")
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${versions["opentelemetry"]}-alpha")
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:${versions["opentelemetry"]}-alpha")

implementation("io.opentelemetry:opentelemetry-semconv:${versions["opentelemetry"]}-alpha")
implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-extension-api:${versions["opentelemetry_java_agent"]}")
implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:${versions["opentelemetry_java_agent"]}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import com.google.auto.service.AutoService;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.sdk.autoconfigure.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
package org.hypertrace.agent.otel.extensions.processor;

import com.google.auto.service.AutoService;
import io.opentelemetry.sdk.autoconfigure.spi.SdkTracerProviderConfigurer;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.traces.SdkTracerProviderConfigurer;
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;

/**
Expand All @@ -32,7 +33,8 @@
public class HypertraceTracerCustomizer implements SdkTracerProviderConfigurer {

@Override
public void configure(SdkTracerProviderBuilder tracerProvider) {
public void configure(
SdkTracerProviderBuilder tracerProvider, ConfigProperties configProperties) {
tracerProvider.addSpanProcessor(new AddTagsSpanProcessor());
}
}
3 changes: 3 additions & 0 deletions smoke-tests/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ dependencies{
testImplementation("com.squareup.okhttp3:okhttp:4.9.0")
testImplementation("org.awaitility:awaitility:4.0.3")
testImplementation("io.opentelemetry:opentelemetry-proto:${versions["opentelemetry"]}-alpha")
testImplementation("io.grpc:grpc-core:1.36.1") // needed at runtime to send gRPC requests to the gRPC app
testRuntimeOnly("io.grpc:grpc-netty-shaded:1.36.1") // needed at runtime to send gRPC requests to the gRPC app
testRuntimeOnly("io.grpc:grpc-stub:1.36.1") // needed at runtime to send gRPC requests to the gRPC app
testRuntimeOnly("io.grpc:grpc-protobuf:1.36.1") // needed at runtime to send gRPC requests to the gRPC app
testImplementation("io.opentelemetry:opentelemetry-sdk:${versions["opentelemetry"]}")
testImplementation("com.google.protobuf:protobuf-java-util:3.15.8")
testImplementation("org.spockframework:spock-core:1.3-groovy-2.5")
Expand Down

0 comments on commit 09f6553

Please sign in to comment.