Skip to content

Commit 23761b2

Browse files
authored
Bump OTEL to 0.15.0 (#260)
* Bump OTEL to 0.15.0 Signed-off-by: Pavol Loffay <[email protected]> * Update Signed-off-by: Pavol Loffay <[email protected]> * cleanup Signed-off-by: Pavol Loffay <[email protected]> * Matcher changes Signed-off-by: Pavol Loffay <[email protected]> * use ghcr images Signed-off-by: Pavol Loffay <[email protected]> * foobar Signed-off-by: Pavol Loffay <[email protected]>
1 parent 48be5df commit 23761b2

File tree

18 files changed

+166
-35
lines changed

18 files changed

+166
-35
lines changed

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ subprojects {
2828
description = "Hypertrace OpenTelemetry Javaagent"
2929

3030
extra.set("versions", mapOf(
31-
"opentelemetry" to "0.14.1",
32-
"opentelemetry_java_agent" to "0.14.0",
31+
"opentelemetry" to "0.15.0",
32+
"opentelemetry_java_agent" to "0.15.1",
3333
"byte_buddy" to "1.10.18"
3434
))
3535

instrumentation/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,10 @@ tasks {
7979

8080
// relocate OpenTelemetry API
8181
relocate("io.opentelemetry.api", "io.opentelemetry.javaagent.shaded.io.opentelemetry.api")
82+
relocate("io.opentelemetry.semconv", "io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv")
8283
relocate("io.opentelemetry.spi", "io.opentelemetry.javaagent.shaded.io.opentelemetry.spi")
8384
relocate("io.opentelemetry.context", "io.opentelemetry.javaagent.shaded.io.opentelemetry.context")
85+
relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
8486
relocate ("io.opentelemetry.extension.trace.propagation", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.trace.propagation")
8587
}
8688
}

instrumentation/grpc-1.5/build.gradle.kts

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,38 @@ protobuf {
5555
}
5656

5757
val versions: Map<String, String> by extra
58+
val grpcVersion = "1.5.0"
5859

5960
dependencies {
6061
api("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-grpc-1.5:${versions["opentelemetry_java_agent"]}")
6162
api("io.opentelemetry.instrumentation:opentelemetry-grpc-1.5:${versions["opentelemetry_java_agent"]}")
6263

63-
compileOnly("io.grpc:grpc-core:1.5.0")
64-
compileOnly("io.grpc:grpc-protobuf:1.5.0")
65-
compileOnly("io.grpc:grpc-stub:1.5.0")
66-
compileOnly("io.grpc:grpc-netty:1.5.0")
64+
compileOnly("io.grpc:grpc-core:${grpcVersion}")
65+
compileOnly("io.grpc:grpc-protobuf:${grpcVersion}")
66+
compileOnly("io.grpc:grpc-stub:${grpcVersion}")
67+
compileOnly("io.grpc:grpc-netty:${grpcVersion}")
6768

6869
implementation("javax.annotation:javax.annotation-api:1.3.2")
6970

7071
testImplementation(project(":testing-common"))
71-
testImplementation("io.grpc:grpc-core:1.5.0")
72-
testImplementation("io.grpc:grpc-protobuf:1.5.0")
73-
testImplementation("io.grpc:grpc-stub:1.5.0")
74-
testImplementation("io.grpc:grpc-netty:1.5.0")
72+
testImplementation("io.grpc:grpc-core:${grpcVersion}") {
73+
version {
74+
strictly(grpcVersion)
75+
}
76+
}
77+
testImplementation("io.grpc:grpc-protobuf:${grpcVersion}") {
78+
version {
79+
strictly(grpcVersion)
80+
}
81+
}
82+
testImplementation("io.grpc:grpc-stub:${grpcVersion}") {
83+
version {
84+
strictly(grpcVersion)
85+
}
86+
}
87+
testImplementation("io.grpc:grpc-netty:${grpcVersion}") {
88+
version {
89+
strictly(grpcVersion)
90+
}
91+
}
7592
}

instrumentation/netty/netty-4.0/build.gradle.kts

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,48 @@ afterEvaluate{
4040
}
4141

4242
val versions: Map<String, String> by extra
43+
// version used by async-http-client:2.0.9
44+
val nettyVersion = "4.0.38.Final"
4345

4446
dependencies {
4547
implementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-netty-4.0:${versions["opentelemetry_java_agent"]}")
4648

47-
implementation("io.netty:netty-codec-http:4.0.0.Final")
49+
compileOnly("io.netty:netty-codec-http:${nettyVersion}") {
50+
version {
51+
strictly(nettyVersion)
52+
}
53+
}
54+
55+
testImplementation("io.netty:netty-codec-http:${nettyVersion}") {
56+
version {
57+
strictly(nettyVersion)
58+
}
59+
}
60+
testImplementation("io.netty:netty-transport:${nettyVersion}") {
61+
version {
62+
strictly(nettyVersion)
63+
}
64+
}
65+
testImplementation("io.netty:netty-common:${nettyVersion}") {
66+
version {
67+
strictly(nettyVersion)
68+
}
69+
}
70+
testImplementation("io.netty:netty-codec:${nettyVersion}") {
71+
version {
72+
strictly(nettyVersion)
73+
}
74+
}
75+
testImplementation("io.netty:netty-handler:${nettyVersion}") {
76+
version {
77+
strictly(nettyVersion)
78+
}
79+
}
80+
testImplementation("io.netty:netty-buffer:${nettyVersion}") {
81+
version {
82+
strictly(nettyVersion)
83+
}
84+
}
4885

4986
testImplementation(project(":testing-common"))
5087
testImplementation("org.asynchttpclient:async-http-client:2.0.9")

instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/NettyInstrumentationModule.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,15 @@
1616

1717
package io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_0;
1818

19+
import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;
20+
import static net.bytebuddy.matcher.ElementMatchers.not;
21+
1922
import com.google.auto.service.AutoService;
2023
import io.opentelemetry.javaagent.tooling.InstrumentationModule;
2124
import io.opentelemetry.javaagent.tooling.TypeInstrumentation;
2225
import java.util.Arrays;
2326
import java.util.List;
27+
import net.bytebuddy.matcher.ElementMatcher;
2428

2529
@AutoService(InstrumentationModule.class)
2630
public class NettyInstrumentationModule extends InstrumentationModule {
@@ -34,6 +38,13 @@ public int getOrder() {
3438
return -1;
3539
}
3640

41+
@Override
42+
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
43+
// Class added in 4.1.0 and not in 4.0.56 to avoid resolving this instrumentation completely
44+
// when using 4.1.
45+
return not(hasClassesNamed("io.netty.handler.codec.http.CombinedHttpHeaders"));
46+
}
47+
3748
@Override
3849
public List<TypeInstrumentation> typeInstrumentations() {
3950
return Arrays.asList(new NettyChannelPipelineInstrumentation());

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,14 @@
1616

1717
package io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_1;
1818

19+
import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;
20+
1921
import com.google.auto.service.AutoService;
2022
import io.opentelemetry.javaagent.tooling.InstrumentationModule;
2123
import io.opentelemetry.javaagent.tooling.TypeInstrumentation;
2224
import java.util.Arrays;
2325
import java.util.List;
26+
import net.bytebuddy.matcher.ElementMatcher;
2427

2528
@AutoService(InstrumentationModule.class)
2629
public class NettyInstrumentationModule extends InstrumentationModule {
@@ -34,6 +37,13 @@ public int getOrder() {
3437
return -1;
3538
}
3639

40+
@Override
41+
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
42+
// Class added in 4.1.0 and not in 4.0.56 to avoid resolving this instrumentation completely
43+
// when using 4.0.
44+
return hasClassesNamed("io.netty.handler.codec.http.CombinedHttpHeaders");
45+
}
46+
3747
@Override
3848
public List<TypeInstrumentation> typeInstrumentations() {
3949
return Arrays.asList(new NettyChannelPipelineInstrumentation());

instrumentation/servlet/servlet-3.0-no-wrapping/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/Servlet31NoWrappingInstrumentation.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.v3_0.nowrapping;
1818

1919
import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.AgentElementMatchers.safeHasSuperType;
20+
import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;
2021
import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
2122
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
2223
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -59,9 +60,14 @@
5960

6061
public class Servlet31NoWrappingInstrumentation implements TypeInstrumentation {
6162

63+
@Override
64+
public ElementMatcher<ClassLoader> classLoaderOptimization() {
65+
return hasClassesNamed("javax.servlet.Filter");
66+
}
67+
6268
@Override
6369
public ElementMatcher<? super TypeDescription> typeMatcher() {
64-
return safeHasSuperType(namedOneOf("javax.servlet.Filter", "javax.servlet.http.HttpServlet"));
70+
return safeHasSuperType(namedOneOf("javax.servlet.Filter", "javax.servlet.Servlet"));
6571
}
6672

6773
@Override

instrumentation/vertx-web-3.0/build.gradle.kts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,46 @@ afterEvaluate{
2222
}
2323

2424
val versions: Map<String, String> by extra
25+
// version used by io.vertx:vertx-web:3.0.0
26+
val nettyVersion = "4.0.28.Final"
2527

2628
dependencies {
2729
testImplementation(project(":testing-common"))
2830
testImplementation(project(":instrumentation:netty:netty-4.0"))
2931
testImplementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-netty-4.0:${versions["opentelemetry_java_agent"]}")
3032
testImplementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-vertx-web-3.0:${versions["opentelemetry_java_agent"]}")
3133
testImplementation("io.vertx:vertx-web:3.0.0")
34+
35+
36+
testImplementation("io.netty:netty-codec-http:${nettyVersion}") {
37+
version {
38+
strictly(nettyVersion)
39+
}
40+
}
41+
testImplementation("io.netty:netty-transport:${nettyVersion}") {
42+
version {
43+
strictly(nettyVersion)
44+
}
45+
}
46+
testImplementation("io.netty:netty-common:${nettyVersion}") {
47+
version {
48+
strictly(nettyVersion)
49+
}
50+
}
51+
testImplementation("io.netty:netty-codec:${nettyVersion}") {
52+
version {
53+
strictly(nettyVersion)
54+
}
55+
}
56+
testImplementation("io.netty:netty-handler:${nettyVersion}") {
57+
version {
58+
strictly(nettyVersion)
59+
}
60+
}
61+
testImplementation("io.netty:netty-buffer:${nettyVersion}") {
62+
version {
63+
strictly(nettyVersion)
64+
}
65+
}
3266
}
3367

javaagent/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,10 @@ tasks {
5656

5757
// relocate OpenTelemetry API
5858
relocate("io.opentelemetry.api", "io.opentelemetry.javaagent.shaded.io.opentelemetry.api")
59+
relocate("io.opentelemetry.semconv", "io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv")
5960
relocate("io.opentelemetry.spi", "io.opentelemetry.javaagent.shaded.io.opentelemetry.spi")
6061
relocate("io.opentelemetry.context", "io.opentelemetry.javaagent.shaded.io.opentelemetry.context")
62+
relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
6163
relocate("io.opentelemetry.extension.trace.propagation", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.trace.propagation")
6264

6365
mergeServiceFiles {

otel-extensions/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ dependencies {
88
api(project(":filter-custom-opa"))
99

1010
compileOnly("io.opentelemetry:opentelemetry-sdk:${versions["opentelemetry"]}")
11+
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${versions["opentelemetry"]}-alpha")
1112
implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-spi:${versions["opentelemetry_java_agent"]}")
1213

1314
implementation("org.slf4j:slf4j-api:1.7.30")

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
public class HypertraceAgentConfiguration implements PropertySource {
3232

3333
// https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/sdk-environment-variables.md
34-
private static final String OTEL_EXPORTER = "otel.exporter";
34+
private static final String OTEL_TRACE_EXPORTER = "otel.trace.exporter";
35+
private static final String OTEL_METRICS_EXPORTER = "otel.metrics.exporter";
3536
private static final String OTEL_PROPAGATORS = "otel.propagators";
3637
private static final String OTEL_EXPORTER_ZIPKIN_ENDPOINT = "otel.exporter.zipkin.endpoint";
3738
private static final String OTEL_EXPORTER_ZIPKIN_SERVICE_NAME =
@@ -45,14 +46,15 @@ public Map<String, String> getProperties() {
4546
AgentConfig agentConfig = HypertraceConfig.get();
4647

4748
Map<String, String> configProperties = new HashMap<>();
48-
configProperties.put(OTEL_EXPORTER, "zipkin");
49+
configProperties.put(OTEL_TRACE_EXPORTER, "zipkin");
4950
configProperties.put(
5051
OTEL_EXPORTER_ZIPKIN_SERVICE_NAME, agentConfig.getServiceName().getValue());
5152
configProperties.put(
5253
OTEL_EXPORTER_ZIPKIN_ENDPOINT, agentConfig.getReporting().getEndpoint().getValue());
5354
configProperties.put(
5455
OTEL_PROPAGATORS, toOtelPropagators(agentConfig.getPropagationFormatsList()));
55-
56+
// metrics are not reported
57+
configProperties.put(OTEL_METRICS_EXPORTER, "none");
5658
return configProperties;
5759
}
5860

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,23 @@
2121
import io.opentelemetry.api.common.AttributesBuilder;
2222
import io.opentelemetry.sdk.resources.ResourceAttributes;
2323
import io.opentelemetry.sdk.resources.ResourceProvider;
24+
import org.hypertrace.agent.config.Config.AgentConfig;
25+
import org.hypertrace.agent.core.config.HypertraceConfig;
2426

2527
@AutoService(ResourceProvider.class)
2628
public class HypertraceResourceProvider extends ResourceProvider {
2729

2830
private final CgroupsReader cgroupsReader = new CgroupsReader();
31+
private final AgentConfig agentConfig = HypertraceConfig.get();
2932

3033
@Override
3134
protected Attributes getAttributes() {
3235
AttributesBuilder builder = Attributes.builder();
3336
String containerId = this.cgroupsReader.readContainerId();
3437
if (containerId != null && !containerId.isEmpty()) {
35-
builder.put(ResourceAttributes.CONTAINER_ID.getKey(), containerId);
38+
builder.put(ResourceAttributes.CONTAINER_ID, containerId);
3639
}
40+
builder.put(ResourceAttributes.SERVICE_NAME, agentConfig.getServiceName().getValue());
3741
return builder.build();
3842
}
3943
}

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

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

1919
import com.google.auto.service.AutoService;
20-
import io.opentelemetry.javaagent.spi.TracerCustomizer;
21-
import io.opentelemetry.sdk.trace.SdkTracerManagement;
20+
import io.opentelemetry.sdk.autoconfigure.spi.SdkTracerProviderConfigurer;
21+
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
2222

2323
/**
2424
* This is a workaround to add container ID tags to spans when Zipkin exporter is used. Zipkin
@@ -28,11 +28,11 @@
2828
* <p>Remove this once we migrate to OTEL exporter
2929
* https://github.com/hypertrace/javaagent/issues/132
3030
*/
31-
@AutoService(TracerCustomizer.class)
32-
public class HypertraceTracerCustomizer implements TracerCustomizer {
31+
@AutoService(SdkTracerProviderConfigurer.class)
32+
public class HypertraceTracerCustomizer implements SdkTracerProviderConfigurer {
3333

3434
@Override
35-
public void configure(SdkTracerManagement tracerManagement) {
36-
tracerManagement.addSpanProcessor(new AddTagsSpanProcessor());
35+
public void configure(SdkTracerProviderBuilder tracerProvider) {
36+
tracerProvider.addSpanProcessor(new AddTagsSpanProcessor());
3737
}
3838
}

smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public abstract class AbstractSmokeTest {
4949
private static final Logger log = LoggerFactory.getLogger(OpenTelemetryStorage.class);
5050
private static final String OTEL_COLLECTOR_IMAGE = "otel/opentelemetry-collector:latest";
5151
private static final String MOCK_BACKEND_IMAGE =
52-
"open-telemetry-docker-dev.bintray.io/java/smoke-fake-backend:latest";
52+
"ghcr.io/open-telemetry/java-test-containers:smoke-fake-backend-20201128.1734635";
5353
private static final String NETWORK_ALIAS_OTEL_COLLECTOR = "collector";
5454
private static final String NETWORK_ALIAS_OTEL_MOCK_STORAGE = "storage";
5555
private static final String OTEL_EXPORTER_ENDPOINT =
@@ -132,7 +132,7 @@ GenericContainer createAppUnderTest(int jdk) {
132132
MountableFile.forClasspathResource("/ht-config.yaml"), "/etc/ht-config.yaml")
133133
.withEnv("JAVA_TOOL_OPTIONS", "-javaagent:/javaagent.jar")
134134
.withEnv("HT_CONFIG_FILE", "/etc/ht-config.yaml")
135-
.withEnv("OTEL_BSP_MAX_EXPORT_BATCH", "1")
135+
.withEnv("OTEL_BSP_MAX_EXPORT_BATCH_SIZE", "1")
136136
.withEnv("OTEL_BSP_SCHEDULE_DELAY", "10")
137137
.withEnv("HT_REPORTING_ENDPOINT", OTEL_EXPORTER_ENDPOINT);
138138
}

0 commit comments

Comments
 (0)