From 497f57f48e1dddabd34ca57b259fa811f7f86772 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Tue, 29 Jun 2021 00:06:30 +0900 Subject: [PATCH] Update OTel to 1.3.1 (#61) * Update OTel to 1.3.1 * Cleanup --- dependencyManagement/build.gradle.kts | 4 ++-- .../AwsXrayLog4jInstrumentationModule.java | 15 ++++++--------- .../AwsXrayLoggingEventInstrumentation.java | 7 +++---- otelagent/build.gradle.kts | 15 ++++++++++++++- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index aed5e06eaf..7506e52e9f 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -33,7 +33,7 @@ val DEPENDENCY_BOMS = listOf( "com.google.protobuf:protobuf-bom:3.17.0", "com.linecorp.armeria:armeria-bom:1.7.2", "io.grpc:grpc-bom:1.37.1", - "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:${if (!TEST_SNAPSHOTS) "1.2.0-alpha" else "1.3.0-alpha-SNAPSHOT"}", + "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:${if (!TEST_SNAPSHOTS) "1.3.1-alpha" else "1.4.0-alpha-SNAPSHOT"}", "org.apache.logging.log4j:log4j-bom:2.14.1", "org.junit:junit-bom:5.7.2", "org.springframework.boot:spring-boot-dependencies:2.4.5", @@ -66,7 +66,7 @@ val DEPENDENCIES = listOf( "commons-logging:commons-logging:1.2", "com.sparkjava:spark-core:2.9.3", "com.squareup.okhttp3:okhttp:4.9.1", - "io.opentelemetry.javaagent:opentelemetry-javaagent:${if (!TEST_SNAPSHOTS) "1.2.0" else "1.3.0-SNAPSHOT"}", + "io.opentelemetry.javaagent:opentelemetry-javaagent:${if (!TEST_SNAPSHOTS) "1.3.1" else "1.4.0-SNAPSHOT"}", "net.bytebuddy:byte-buddy:1.11.0" ) diff --git a/instrumentation/log4j-2.13.2/src/main/java/software/amazon/opentelemetry/javaagent/instrumentation/log4j_2_13_2/AwsXrayLog4jInstrumentationModule.java b/instrumentation/log4j-2.13.2/src/main/java/software/amazon/opentelemetry/javaagent/instrumentation/log4j_2_13_2/AwsXrayLog4jInstrumentationModule.java index 4d96a2d9a7..839568172a 100644 --- a/instrumentation/log4j-2.13.2/src/main/java/software/amazon/opentelemetry/javaagent/instrumentation/log4j_2_13_2/AwsXrayLog4jInstrumentationModule.java +++ b/instrumentation/log4j-2.13.2/src/main/java/software/amazon/opentelemetry/javaagent/instrumentation/log4j_2_13_2/AwsXrayLog4jInstrumentationModule.java @@ -20,10 +20,9 @@ import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Collections; import java.util.List; -import java.util.Map; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -36,11 +35,10 @@ public AwsXrayLog4jInstrumentationModule() { // The SPI will be merged with what's in the agent so we don't need to inject it, only our // provider implementation. @Override - public String[] helperResourceNames() { - return new String[] { - "software.amazon.opentelemetry.javaagent.instrumentation.log4j_2_13_2." - + "AwsXrayContextDataProvider" - }; + public List helperResourceNames() { + return Collections.singletonList( + "software.amazon.opentelemetry.javaagent.instrumentation.log4j_2_13_2." + + "AwsXrayContextDataProvider"); } @Override @@ -65,9 +63,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { + public void transform(TypeTransformer transformer) { // Nothing to instrument, no methods to match - return Collections.emptyMap(); } } } diff --git a/instrumentation/logback-1.0/src/main/java/software/amazon/opentelemetry/javaagent/instrumentation/logback_1_0/AwsXrayLoggingEventInstrumentation.java b/instrumentation/logback-1.0/src/main/java/software/amazon/opentelemetry/javaagent/instrumentation/logback_1_0/AwsXrayLoggingEventInstrumentation.java index 6d80026d72..6d6c78da28 100644 --- a/instrumentation/logback-1.0/src/main/java/software/amazon/opentelemetry/javaagent/instrumentation/logback_1_0/AwsXrayLoggingEventInstrumentation.java +++ b/instrumentation/logback-1.0/src/main/java/software/amazon/opentelemetry/javaagent/instrumentation/logback_1_0/AwsXrayLoggingEventInstrumentation.java @@ -17,7 +17,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.extension.matcher.ClassLoaderMatcher.hasClassesNamed; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -28,11 +27,11 @@ import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.instrumentation.logback.v1_0.internal.UnionMap; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.api.InstrumentationContext; import java.util.Collections; import java.util.Map; import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.bytecode.assign.Assigner.Typing; import net.bytebuddy.matcher.ElementMatcher; @@ -51,8 +50,8 @@ public ElementMatcher typeMatcher() { } @Override - public Map, String> transformers() { - return singletonMap( + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( isMethod() .and(isPublic()) .and(named("getMDCPropertyMap").or(named("getMdc"))) diff --git a/otelagent/build.gradle.kts b/otelagent/build.gradle.kts index b7c8528bf7..baae2b1ce5 100644 --- a/otelagent/build.gradle.kts +++ b/otelagent/build.gradle.kts @@ -30,8 +30,19 @@ base { archivesBaseName = "aws-opentelemetry-agent" } +val shadowClasspath by configurations.creating { + isCanBeConsumed = false + isCanBeResolved = true + attributes { + attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling::class.java, Bundling.EXTERNAL)) + } +} + dependencies { - implementation("io.opentelemetry.javaagent", "opentelemetry-javaagent", classifier = "all") + // Ensure dependency doesn't leak into POMs by using compileOnly and shadow-specific configuration. + val agentDep = create("io.opentelemetry.javaagent", "opentelemetry-javaagent", classifier = "all") + shadowClasspath(agentDep) + compileOnly(agentDep) } val bundledProjects = listOf( @@ -60,6 +71,8 @@ tasks { shadowJar { archiveClassifier.set("") + configurations = listOf(shadowClasspath) + exclude("**/module-info.class") mergeServiceFiles("inst/META-INF/services")