configProperties = new HashMap<>();
- configProperties.put(OTEL_EXPORTER, "zipkin");
+ configProperties.put(OTEL_TRACE_EXPORTER, "zipkin");
configProperties.put(
OTEL_EXPORTER_ZIPKIN_SERVICE_NAME, agentConfig.getServiceName().getValue());
configProperties.put(
OTEL_EXPORTER_ZIPKIN_ENDPOINT, agentConfig.getReporting().getEndpoint().getValue());
configProperties.put(
OTEL_PROPAGATORS, toOtelPropagators(agentConfig.getPropagationFormatsList()));
-
+ // metrics are not reported
+ configProperties.put(OTEL_METRICS_EXPORTER, "none");
return configProperties;
}
diff --git a/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/HypertraceResourceProvider.java b/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/HypertraceResourceProvider.java
index 0dc458282..2ed6e2627 100644
--- a/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/HypertraceResourceProvider.java
+++ b/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/HypertraceResourceProvider.java
@@ -21,19 +21,23 @@
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.sdk.resources.ResourceAttributes;
import io.opentelemetry.sdk.resources.ResourceProvider;
+import org.hypertrace.agent.config.Config.AgentConfig;
+import org.hypertrace.agent.core.config.HypertraceConfig;
@AutoService(ResourceProvider.class)
public class HypertraceResourceProvider extends ResourceProvider {
private final CgroupsReader cgroupsReader = new CgroupsReader();
+ private final AgentConfig agentConfig = HypertraceConfig.get();
@Override
protected Attributes getAttributes() {
AttributesBuilder builder = Attributes.builder();
String containerId = this.cgroupsReader.readContainerId();
if (containerId != null && !containerId.isEmpty()) {
- builder.put(ResourceAttributes.CONTAINER_ID.getKey(), containerId);
+ builder.put(ResourceAttributes.CONTAINER_ID, containerId);
}
+ builder.put(ResourceAttributes.SERVICE_NAME, agentConfig.getServiceName().getValue());
return builder.build();
}
}
diff --git a/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/processor/HypertraceTracerCustomizer.java b/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/processor/HypertraceTracerCustomizer.java
index d86bedcf6..eabc659fa 100644
--- a/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/processor/HypertraceTracerCustomizer.java
+++ b/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/processor/HypertraceTracerCustomizer.java
@@ -17,8 +17,8 @@
package org.hypertrace.agent.otel.extensions.processor;
import com.google.auto.service.AutoService;
-import io.opentelemetry.javaagent.spi.TracerCustomizer;
-import io.opentelemetry.sdk.trace.SdkTracerManagement;
+import io.opentelemetry.sdk.autoconfigure.spi.SdkTracerProviderConfigurer;
+import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
/**
* This is a workaround to add container ID tags to spans when Zipkin exporter is used. Zipkin
@@ -28,11 +28,11 @@
* Remove this once we migrate to OTEL exporter
* https://github.com/hypertrace/javaagent/issues/132
*/
-@AutoService(TracerCustomizer.class)
-public class HypertraceTracerCustomizer implements TracerCustomizer {
+@AutoService(SdkTracerProviderConfigurer.class)
+public class HypertraceTracerCustomizer implements SdkTracerProviderConfigurer {
@Override
- public void configure(SdkTracerManagement tracerManagement) {
- tracerManagement.addSpanProcessor(new AddTagsSpanProcessor());
+ public void configure(SdkTracerProviderBuilder tracerProvider) {
+ tracerProvider.addSpanProcessor(new AddTagsSpanProcessor());
}
}
diff --git a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
index 4944e1404..05a57267e 100644
--- a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
+++ b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
@@ -66,7 +66,9 @@ public void get() throws IOException {
String url = String.format("http://localhost:%d/greeting", app.getMappedPort(8080));
Request request = new Request.Builder().url(url).get().build();
- Response response = client.newCall(request).execute();
+ try (Response response = client.newCall(request).execute()) {
+ Assertions.assertEquals(response.body().string(), "Hi!");
+ }
ArrayList traces = new ArrayList<>(waitForTraces());
Object currentAgentVersion =
@@ -79,6 +81,7 @@ public void get() throws IOException {
Assertions.assertEquals(
ResourceAttributes.SERVICE_NAME.getKey(),
traces.get(0).getResourceSpans(0).getResource().getAttributes(0).getKey());
+ System.out.println(traces.get(0).getResourceSpans(0).getResource().getAttributesList());
Assertions.assertEquals(
ResourceAttributes.CONTAINER_ID.getKey(),
traces.get(0).getResourceSpans(0).getResource().getAttributes(1).getKey());
@@ -93,7 +96,6 @@ public void get() throws IOException {
.getValue()
.getStringValue());
- Assertions.assertEquals(response.body().string(), "Hi!");
Assertions.assertEquals(1, countSpansByName(traces, "/greeting"));
Assertions.assertEquals(1, countSpansByName(traces, "webcontroller.greeting"));
Assertions.assertTrue(
diff --git a/testing-common/build.gradle.kts b/testing-common/build.gradle.kts
index 9ee829f06..8a9d89d51 100644
--- a/testing-common/build.gradle.kts
+++ b/testing-common/build.gradle.kts
@@ -14,6 +14,7 @@ dependencies {
api("io.opentelemetry:opentelemetry-api:${versions["opentelemetry"]}")
api("io.opentelemetry:opentelemetry-sdk:${versions["opentelemetry"]}")
+ compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${versions["opentelemetry"]}-alpha")
api("com.squareup.okhttp3:okhttp:4.9.0")
implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:${versions["opentelemetry_java_agent"]}")
implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-spi:${versions["opentelemetry_java_agent"]}")
diff --git a/testing-common/src/main/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java b/testing-common/src/main/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java
index 262e86cc7..9731504a7 100644
--- a/testing-common/src/main/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java
+++ b/testing-common/src/main/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java
@@ -22,8 +22,6 @@
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.javaagent.spi.ComponentInstaller;
import io.opentelemetry.javaagent.tooling.AgentInstaller;
-import io.opentelemetry.javaagent.tooling.config.ConfigInitializer;
-import io.opentelemetry.sdk.OpenTelemetrySdk;
import java.io.IOException;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.Instrumentation;
@@ -57,11 +55,10 @@ public abstract class AbstractInstrumenterTest {
*/
public static final InMemoryExporter TEST_WRITER = new InMemoryExporter();;
- protected static final Tracer TEST_TRACER;
+ protected static Tracer TEST_TRACER;
private static final Instrumentation INSTRUMENTATION;
static {
- ConfigInitializer.initialize();
// always run with the thread propagation debugger to help track down sporadic test failures
System.setProperty("otel.threadPropagationDebugger", "true");
System.setProperty("otel.internal.failOnContextLeak", "true");
@@ -74,8 +71,6 @@ public abstract class AbstractInstrumenterTest {
((Logger) LoggerFactory.getLogger("io.opentelemetry")).setLevel(Level.DEBUG);
COMPONENT_INSTALLER = new TestOpenTelemetryInstaller(TEST_WRITER);
- OpenTelemetrySdk.getGlobalTracerManagement().addSpanProcessor(TEST_WRITER);
- TEST_TRACER = GlobalOpenTelemetry.getTracer("io.opentelemetry.auto");
}
private static ClassFileTransformer classFileTransformer;
@@ -95,6 +90,9 @@ public static void beforeAll() {
AgentInstaller.installBytebuddyAgent(
INSTRUMENTATION, Collections.singleton(COMPONENT_INSTALLER));
}
+ if (TEST_TRACER == null) {
+ TEST_TRACER = GlobalOpenTelemetry.getTracer("io.opentelemetry.auto");
+ }
}
@BeforeEach
diff --git a/testing-common/src/main/java/org/hypertrace/agent/testing/TestOpenTelemetryInstaller.java b/testing-common/src/main/java/org/hypertrace/agent/testing/TestOpenTelemetryInstaller.java
index cad52aa97..34d1d5a2e 100644
--- a/testing-common/src/main/java/org/hypertrace/agent/testing/TestOpenTelemetryInstaller.java
+++ b/testing-common/src/main/java/org/hypertrace/agent/testing/TestOpenTelemetryInstaller.java
@@ -32,10 +32,13 @@ public TestOpenTelemetryInstaller(SpanProcessor spanProcessor) {
}
@Override
- public void afterByteBuddyAgent() {
+ public void beforeByteBuddyAgent() {
OpenTelemetrySdk.builder()
.setTracerProvider(SdkTracerProvider.builder().addSpanProcessor(spanProcessor).build())
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.buildAndRegisterGlobal();
}
+
+ @Override
+ public void afterByteBuddyAgent() {}
}
From caee874130d753164a571562c47cad997ad092b0 Mon Sep 17 00:00:00 2001
From: Pavol Loffay
Date: Wed, 10 Feb 2021 13:11:55 +0100
Subject: [PATCH 2/6] Update
Signed-off-by: Pavol Loffay
---
instrumentation/build.gradle.kts | 4 +-
instrumentation/grpc-1.5/build.gradle.kts | 26 ++++++------
.../netty/netty-4.0/build.gradle.kts | 42 +++++++++++++++++--
.../netty/netty-4.1/build.gradle.kts | 2 +-
.../vertx-web-3.0/build.gradle.kts | 37 ++++++++++++++--
5 files changed, 88 insertions(+), 23 deletions(-)
diff --git a/instrumentation/build.gradle.kts b/instrumentation/build.gradle.kts
index 901654498..28a6c3be1 100644
--- a/instrumentation/build.gradle.kts
+++ b/instrumentation/build.gradle.kts
@@ -13,9 +13,7 @@ subprojects {
implementation("net.bytebuddy:byte-buddy:${versions["byte_buddy"]}")
implementation("io.opentelemetry:opentelemetry-api:${versions["opentelemetry"]}")
- implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:${versions["opentelemetry_java_agent"]}") {
- exclude(group = "io.netty")
- }
+ implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:${versions["opentelemetry_java_agent"]}")
implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-api:${versions["opentelemetry_java_agent"]}")
implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:${versions["opentelemetry_java_agent"]}")
implementation(project(":javaagent-core"))
diff --git a/instrumentation/grpc-1.5/build.gradle.kts b/instrumentation/grpc-1.5/build.gradle.kts
index e6ca8fc64..128289d58 100644
--- a/instrumentation/grpc-1.5/build.gradle.kts
+++ b/instrumentation/grpc-1.5/build.gradle.kts
@@ -55,38 +55,38 @@ protobuf {
}
val versions: Map by extra
+val grpcVersion = "1.5.0"
dependencies {
api("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-grpc-1.5:${versions["opentelemetry_java_agent"]}")
api("io.opentelemetry.instrumentation:opentelemetry-grpc-1.5:${versions["opentelemetry_java_agent"]}")
- implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:${versions["opentelemetry_java_agent"]}")
- compileOnly("io.grpc:grpc-core:1.5.0")
- compileOnly("io.grpc:grpc-protobuf:1.5.0")
- compileOnly("io.grpc:grpc-stub:1.5.0")
- compileOnly("io.grpc:grpc-netty:1.5.0")
+ compileOnly("io.grpc:grpc-core:${grpcVersion}")
+ compileOnly("io.grpc:grpc-protobuf:${grpcVersion}")
+ compileOnly("io.grpc:grpc-stub:${grpcVersion}")
+ compileOnly("io.grpc:grpc-netty:${grpcVersion}")
implementation("javax.annotation:javax.annotation-api:1.3.2")
testImplementation(project(":testing-common"))
- testImplementation("io.grpc:grpc-core:1.5.0") {
+ testImplementation("io.grpc:grpc-core:${grpcVersion}") {
version {
- strictly("1.5.0")
+ strictly(grpcVersion)
}
}
- testImplementation("io.grpc:grpc-protobuf:1.5.0") {
+ testImplementation("io.grpc:grpc-protobuf:${grpcVersion}") {
version {
- strictly("1.5.0")
+ strictly(grpcVersion)
}
}
- testImplementation("io.grpc:grpc-stub:1.5.0") {
+ testImplementation("io.grpc:grpc-stub:${grpcVersion}") {
version {
- strictly("1.5.0")
+ strictly(grpcVersion)
}
}
- testImplementation("io.grpc:grpc-netty:1.5.0") {
+ testImplementation("io.grpc:grpc-netty:${grpcVersion}") {
version {
- strictly("1.5.0")
+ strictly(grpcVersion)
}
}
}
diff --git a/instrumentation/netty/netty-4.0/build.gradle.kts b/instrumentation/netty/netty-4.0/build.gradle.kts
index e9febfb09..14f1f93b1 100644
--- a/instrumentation/netty/netty-4.0/build.gradle.kts
+++ b/instrumentation/netty/netty-4.0/build.gradle.kts
@@ -40,14 +40,50 @@ afterEvaluate{
}
val versions: Map by extra
+// version used by async-http-client:2.0.9
+val nettyVersion = "4.0.38.Final"
dependencies {
implementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-netty-4.0:${versions["opentelemetry_java_agent"]}")
- implementation("io.netty:netty-codec-http:4.0.0.Final")
- testImplementation(project(":testing-common")) {
- exclude(group = "io.netty")
+ compileOnly("io.netty:netty-codec-http:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
}
+
+ testImplementation("io.netty:netty-codec-http:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-transport:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-common:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-codec:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-handler:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-buffer:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+
+ testImplementation(project(":testing-common"))
testImplementation("org.asynchttpclient:async-http-client:2.0.9")
}
diff --git a/instrumentation/netty/netty-4.1/build.gradle.kts b/instrumentation/netty/netty-4.1/build.gradle.kts
index 64b98f2d2..1523e676d 100644
--- a/instrumentation/netty/netty-4.1/build.gradle.kts
+++ b/instrumentation/netty/netty-4.1/build.gradle.kts
@@ -47,7 +47,7 @@ dependencies {
implementation("io.netty:netty-codec-http:4.1.0.Final")
testImplementation(project(":testing-common")) {
- exclude(group = "io.netty")
+// exclude(group = "io.netty")
}
testImplementation("io.netty:netty-handler:4.1.0.Final")
testImplementation("org.asynchttpclient:async-http-client:2.1.0")
diff --git a/instrumentation/vertx-web-3.0/build.gradle.kts b/instrumentation/vertx-web-3.0/build.gradle.kts
index cffaa9e00..c292affd1 100644
--- a/instrumentation/vertx-web-3.0/build.gradle.kts
+++ b/instrumentation/vertx-web-3.0/build.gradle.kts
@@ -22,14 +22,45 @@ afterEvaluate{
}
val versions: Map by extra
+val nettyVersion = "4.0.28.Final"
dependencies {
- testImplementation(project(":testing-common")) {
- exclude(group = "io.netty")
- }
+ testImplementation(project(":testing-common"))
testImplementation(project(":instrumentation:netty:netty-4.0"))
testImplementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-netty-4.0:${versions["opentelemetry_java_agent"]}")
testImplementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-vertx-web-3.0:${versions["opentelemetry_java_agent"]}")
testImplementation("io.vertx:vertx-web:3.0.0")
+
+
+ testImplementation("io.netty:netty-codec-http:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-transport:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-common:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-codec:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-handler:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
+ testImplementation("io.netty:netty-buffer:${nettyVersion}") {
+ version {
+ strictly(nettyVersion)
+ }
+ }
}
From d232f7284eeeeb8bebbd45dd036598d08ff79132 Mon Sep 17 00:00:00 2001
From: Pavol Loffay
Date: Wed, 10 Feb 2021 13:15:42 +0100
Subject: [PATCH 3/6] cleanup
Signed-off-by: Pavol Loffay
---
instrumentation/netty/netty-4.1/build.gradle.kts | 4 +---
instrumentation/vertx-web-3.0/build.gradle.kts | 1 +
.../org/hypertrace/agent/smoketest/SpringBootSmokeTest.java | 1 -
3 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/instrumentation/netty/netty-4.1/build.gradle.kts b/instrumentation/netty/netty-4.1/build.gradle.kts
index 1523e676d..a4659b931 100644
--- a/instrumentation/netty/netty-4.1/build.gradle.kts
+++ b/instrumentation/netty/netty-4.1/build.gradle.kts
@@ -46,9 +46,7 @@ dependencies {
implementation("io.netty:netty-codec-http:4.1.0.Final")
- testImplementation(project(":testing-common")) {
-// exclude(group = "io.netty")
- }
+ testImplementation(project(":testing-common"))
testImplementation("io.netty:netty-handler:4.1.0.Final")
testImplementation("org.asynchttpclient:async-http-client:2.1.0")
}
diff --git a/instrumentation/vertx-web-3.0/build.gradle.kts b/instrumentation/vertx-web-3.0/build.gradle.kts
index c292affd1..da22d8097 100644
--- a/instrumentation/vertx-web-3.0/build.gradle.kts
+++ b/instrumentation/vertx-web-3.0/build.gradle.kts
@@ -22,6 +22,7 @@ afterEvaluate{
}
val versions: Map by extra
+// version used by io.vertx:vertx-web:3.0.0
val nettyVersion = "4.0.28.Final"
dependencies {
diff --git a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
index 05a57267e..4afdf1f7d 100644
--- a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
+++ b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
@@ -81,7 +81,6 @@ public void get() throws IOException {
Assertions.assertEquals(
ResourceAttributes.SERVICE_NAME.getKey(),
traces.get(0).getResourceSpans(0).getResource().getAttributes(0).getKey());
- System.out.println(traces.get(0).getResourceSpans(0).getResource().getAttributesList());
Assertions.assertEquals(
ResourceAttributes.CONTAINER_ID.getKey(),
traces.get(0).getResourceSpans(0).getResource().getAttributes(1).getKey());
From 1cc60e1e189ec5e93f603525d40ee2048b6fdbba Mon Sep 17 00:00:00 2001
From: Pavol Loffay
Date: Wed, 10 Feb 2021 14:02:58 +0100
Subject: [PATCH 4/6] Matcher changes
Signed-off-by: Pavol Loffay
---
instrumentation/build.gradle.kts | 2 ++
.../netty/v4_0/NettyInstrumentationModule.java | 11 +++++++++++
.../netty/v4_1/NettyInstrumentationModule.java | 10 ++++++++++
.../Servlet31NoWrappingInstrumentation.java | 8 +++++++-
javaagent/build.gradle.kts | 2 ++
.../agent/smoketest/SpringBootSmokeTest.java | 2 +-
6 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/instrumentation/build.gradle.kts b/instrumentation/build.gradle.kts
index 28a6c3be1..2e840ab6b 100644
--- a/instrumentation/build.gradle.kts
+++ b/instrumentation/build.gradle.kts
@@ -79,8 +79,10 @@ tasks {
// relocate OpenTelemetry API
relocate("io.opentelemetry.api", "io.opentelemetry.javaagent.shaded.io.opentelemetry.api")
+ relocate("io.opentelemetry.semconv", "io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv")
relocate("io.opentelemetry.spi", "io.opentelemetry.javaagent.shaded.io.opentelemetry.spi")
relocate("io.opentelemetry.context", "io.opentelemetry.javaagent.shaded.io.opentelemetry.context")
+ relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
relocate ("io.opentelemetry.extension.trace.propagation", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.trace.propagation")
}
}
diff --git a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/NettyInstrumentationModule.java b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/NettyInstrumentationModule.java
index 0e8c0b83b..52d102836 100644
--- a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/NettyInstrumentationModule.java
+++ b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/NettyInstrumentationModule.java
@@ -16,11 +16,15 @@
package io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_0;
+import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;
+import static net.bytebuddy.matcher.ElementMatchers.not;
+
import com.google.auto.service.AutoService;
import io.opentelemetry.javaagent.tooling.InstrumentationModule;
import io.opentelemetry.javaagent.tooling.TypeInstrumentation;
import java.util.Arrays;
import java.util.List;
+import net.bytebuddy.matcher.ElementMatcher;
@AutoService(InstrumentationModule.class)
public class NettyInstrumentationModule extends InstrumentationModule {
@@ -34,6 +38,13 @@ public int getOrder() {
return -1;
}
+ @Override
+ public ElementMatcher.Junction classLoaderMatcher() {
+ // Class added in 4.1.0 and not in 4.0.56 to avoid resolving this instrumentation completely
+ // when using 4.1.
+ return not(hasClassesNamed("io.netty.handler.codec.http.CombinedHttpHeaders"));
+ }
+
@Override
public List typeInstrumentations() {
return Arrays.asList(new NettyChannelPipelineInstrumentation());
diff --git a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/NettyInstrumentationModule.java b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/NettyInstrumentationModule.java
index b66c9341f..e4c90cef3 100644
--- a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/NettyInstrumentationModule.java
+++ b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/NettyInstrumentationModule.java
@@ -16,11 +16,14 @@
package io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_1;
+import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;
+
import com.google.auto.service.AutoService;
import io.opentelemetry.javaagent.tooling.InstrumentationModule;
import io.opentelemetry.javaagent.tooling.TypeInstrumentation;
import java.util.Arrays;
import java.util.List;
+import net.bytebuddy.matcher.ElementMatcher;
@AutoService(InstrumentationModule.class)
public class NettyInstrumentationModule extends InstrumentationModule {
@@ -34,6 +37,13 @@ public int getOrder() {
return -1;
}
+ @Override
+ public ElementMatcher.Junction classLoaderMatcher() {
+ // Class added in 4.1.0 and not in 4.0.56 to avoid resolving this instrumentation completely
+ // when using 4.0.
+ return hasClassesNamed("io.netty.handler.codec.http.CombinedHttpHeaders");
+ }
+
@Override
public List typeInstrumentations() {
return Arrays.asList(new NettyChannelPipelineInstrumentation());
diff --git a/instrumentation/servlet/servlet-3.0-no-wrapping/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/Servlet31NoWrappingInstrumentation.java b/instrumentation/servlet/servlet-3.0-no-wrapping/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/Servlet31NoWrappingInstrumentation.java
index 83377141c..c7343939a 100644
--- a/instrumentation/servlet/servlet-3.0-no-wrapping/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/Servlet31NoWrappingInstrumentation.java
+++ b/instrumentation/servlet/servlet-3.0-no-wrapping/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/servlet/v3_0/nowrapping/Servlet31NoWrappingInstrumentation.java
@@ -17,6 +17,7 @@
package io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.v3_0.nowrapping;
import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.AgentElementMatchers.safeHasSuperType;
+import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;
import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -59,9 +60,14 @@
public class Servlet31NoWrappingInstrumentation implements TypeInstrumentation {
+ @Override
+ public ElementMatcher classLoaderOptimization() {
+ return hasClassesNamed("javax.servlet.Filter");
+ }
+
@Override
public ElementMatcher super TypeDescription> typeMatcher() {
- return safeHasSuperType(namedOneOf("javax.servlet.Filter", "javax.servlet.http.HttpServlet"));
+ return safeHasSuperType(namedOneOf("javax.servlet.Filter", "javax.servlet.Servlet"));
}
@Override
diff --git a/javaagent/build.gradle.kts b/javaagent/build.gradle.kts
index 7eb40f320..3568330eb 100644
--- a/javaagent/build.gradle.kts
+++ b/javaagent/build.gradle.kts
@@ -56,8 +56,10 @@ tasks {
// relocate OpenTelemetry API
relocate("io.opentelemetry.api", "io.opentelemetry.javaagent.shaded.io.opentelemetry.api")
+ relocate("io.opentelemetry.semconv", "io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv")
relocate("io.opentelemetry.spi", "io.opentelemetry.javaagent.shaded.io.opentelemetry.spi")
relocate("io.opentelemetry.context", "io.opentelemetry.javaagent.shaded.io.opentelemetry.context")
+ relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
relocate("io.opentelemetry.extension.trace.propagation", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.trace.propagation")
mergeServiceFiles {
diff --git a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
index 4afdf1f7d..22fff4c8d 100644
--- a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
+++ b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
@@ -62,7 +62,7 @@ static synchronized void afterEach() {
}
@Test
- public void get() throws IOException {
+ public void get() throws IOException, InterruptedException {
String url = String.format("http://localhost:%d/greeting", app.getMappedPort(8080));
Request request = new Request.Builder().url(url).get().build();
From dfab761924563f3aa11ecabab786b30c4330e0c3 Mon Sep 17 00:00:00 2001
From: Pavol Loffay
Date: Wed, 10 Feb 2021 14:46:38 +0100
Subject: [PATCH 5/6] use ghcr images
Signed-off-by: Pavol Loffay
---
.../org/hypertrace/agent/smoketest/AbstractSmokeTest.java | 4 ++--
.../org/hypertrace/agent/smoketest/SpringBootSmokeTest.java | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java
index 60d8a9fc9..470204f00 100644
--- a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java
+++ b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java
@@ -49,7 +49,7 @@ public abstract class AbstractSmokeTest {
private static final Logger log = LoggerFactory.getLogger(OpenTelemetryStorage.class);
private static final String OTEL_COLLECTOR_IMAGE = "otel/opentelemetry-collector:latest";
private static final String MOCK_BACKEND_IMAGE =
- "open-telemetry-docker-dev.bintray.io/java/smoke-fake-backend:latest";
+ "ghcr.io/open-telemetry/java-test-containers:smoke-fake-backend-20201128.1734635";
private static final String NETWORK_ALIAS_OTEL_COLLECTOR = "collector";
private static final String NETWORK_ALIAS_OTEL_MOCK_STORAGE = "storage";
private static final String OTEL_EXPORTER_ENDPOINT =
@@ -132,7 +132,7 @@ GenericContainer createAppUnderTest(int jdk) {
MountableFile.forClasspathResource("/ht-config.yaml"), "/etc/ht-config.yaml")
.withEnv("JAVA_TOOL_OPTIONS", "-javaagent:/javaagent.jar")
.withEnv("HT_CONFIG_FILE", "/etc/ht-config.yaml")
- .withEnv("OTEL_BSP_MAX_EXPORT_BATCH", "1")
+ .withEnv("OTEL_BSP_MAX_EXPORT_BATCH_SIZE", "1")
.withEnv("OTEL_BSP_SCHEDULE_DELAY", "10")
.withEnv("HT_REPORTING_ENDPOINT", OTEL_EXPORTER_ENDPOINT);
}
diff --git a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
index 22fff4c8d..9ea42cbfa 100644
--- a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
+++ b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
@@ -40,7 +40,7 @@ public class SpringBootSmokeTest extends AbstractSmokeTest {
@Override
protected String getTargetImage(int jdk) {
- return "open-telemetry-docker-dev.bintray.io/java/smoke-springboot-jdk" + jdk + ":latest";
+ return "ghcr.io/open-telemetry/java-test-containers:smoke-springboot-jdk" + jdk + "-20210209.550405798";
}
private static GenericContainer app;
From 38149d1d7c0b1c2d521dfdcc62c256ae05cb51c8 Mon Sep 17 00:00:00 2001
From: Pavol Loffay
Date: Wed, 10 Feb 2021 14:52:40 +0100
Subject: [PATCH 6/6] foobar
Signed-off-by: Pavol Loffay
---
.../org/hypertrace/agent/smoketest/SpringBootSmokeTest.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
index 9ea42cbfa..d2ec97101 100644
--- a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
+++ b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
@@ -40,7 +40,9 @@ public class SpringBootSmokeTest extends AbstractSmokeTest {
@Override
protected String getTargetImage(int jdk) {
- return "ghcr.io/open-telemetry/java-test-containers:smoke-springboot-jdk" + jdk + "-20210209.550405798";
+ return "ghcr.io/open-telemetry/java-test-containers:smoke-springboot-jdk"
+ + jdk
+ + "-20210209.550405798";
}
private static GenericContainer app;