Skip to content

Commit bb88746

Browse files
authored
Fix shading aws propagator (#10669)
1 parent edf64c5 commit bb88746

File tree

9 files changed

+74
-5
lines changed

9 files changed

+74
-5
lines changed

conventions/src/main/kotlin/io.opentelemetry.instrumentation.javaagent-shadowing.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ tasks.withType<ShadowJar>().configureEach {
3535
// relocate(the OpenTelemetry extensions that are used by instrumentation modules)
3636
// these extensions live in the AgentClassLoader, and are injected into the user's class loader
3737
// by the instrumentation modules that use them
38-
relocate("io.opentelemetry.extension.aws", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.aws")
38+
relocate("io.opentelemetry.contrib.awsxray", "io.opentelemetry.javaagent.shaded.io.opentelemetry.contrib.awsxray")
3939
relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
4040

4141
// this is for instrumentation of opentelemetry-api and opentelemetry-instrumentation-api

examples/distro/gradle/shadow.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ ext.relocatePackages = { shadowJar ->
1818
// relocate the OpenTelemetry extensions that are used by instrumentation modules
1919
// these extensions live in the AgentClassLoader, and are injected into the user's class loader
2020
// by the instrumentation modules that use them
21-
shadowJar.relocate("io.opentelemetry.extension.aws", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.aws")
21+
shadowJar.relocate("io.opentelemetry.contrib.awsxray", "io.opentelemetry.javaagent.shaded.io.opentelemetry.contrib.awsxray")
2222
shadowJar.relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
2323
}

gradle-plugins/src/main/kotlin/io.opentelemetry.instrumentation.muzzle-check.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ tasks.withType<ShadowJar>().configureEach {
103103
// relocate(the OpenTelemetry extensions that are used by instrumentation modules)
104104
// these extensions live in the AgentClassLoader, and are injected into the user's class loader
105105
// by the instrumentation modules that use them
106-
relocate("io.opentelemetry.extension.aws", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.aws")
106+
relocate("io.opentelemetry.contrib.awsxray", "io.opentelemetry.javaagent.shaded.io.opentelemetry.contrib.awsxray")
107107
relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
108108

109109
// this is for instrumentation of opentelemetry-api and opentelemetry-instrumentation-api

instrumentation/aws-sdk/aws-sdk-2.2/javaagent/build.gradle.kts

+2
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ dependencies {
7171
library("software.amazon.awssdk:sqs:2.2.0")
7272

7373
testImplementation(project(":instrumentation:aws-sdk:aws-sdk-2.2:testing"))
74+
testImplementation("io.opentelemetry.contrib:opentelemetry-aws-xray-propagator")
75+
7476
// Make sure these don't add HTTP headers
7577
testInstrumentation(project(":instrumentation:apache-httpclient:apache-httpclient-4.0:javaagent"))
7678
testInstrumentation(project(":instrumentation:apache-httpclient:apache-httpclient-5.0:javaagent"))

instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/s3PresignerTest/java/S3PresignerTest.java instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/s3PresignerTest/java/io/opentelemetry/javaagent/instrumentation/awssdk/v2_2/S3PresignerTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6+
package io.opentelemetry.javaagent.instrumentation.awssdk.v2_2;
7+
68
import static org.assertj.core.api.Assertions.assertThat;
79

810
import io.opentelemetry.api.trace.Span;

instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/test/java/Aws2ClientRecordHttpErrorTest.java instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v2_2/Aws2ClientRecordHttpErrorTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6+
package io.opentelemetry.javaagent.instrumentation.awssdk.v2_2;
7+
68
import io.opentelemetry.instrumentation.awssdk.v2_2.AbstractAws2ClientRecordHttpErrorTest;
79
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
810
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.awssdk.v2_2;
7+
8+
import io.opentelemetry.context.Context;
9+
import io.opentelemetry.context.propagation.TextMapGetter;
10+
import io.opentelemetry.contrib.awsxray.propagator.AwsXrayPropagator;
11+
import java.util.Collections;
12+
import java.util.Map;
13+
import org.junit.jupiter.api.Test;
14+
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
15+
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
16+
import software.amazon.awssdk.regions.Region;
17+
import software.amazon.awssdk.services.sqs.SqsClient;
18+
19+
class AwsXrayPropagatorTest {
20+
private static final StaticCredentialsProvider CREDENTIALS_PROVIDER =
21+
StaticCredentialsProvider.create(
22+
AwsBasicCredentials.create("my-access-key", "my-secret-key"));
23+
24+
@Test
25+
void testAgentShadesAwsXrayPropagator() {
26+
// first build a SqsClient to trigger instrumentation
27+
SqsClient.builder()
28+
.region(Region.AP_NORTHEAST_1)
29+
.credentialsProvider(CREDENTIALS_PROVIDER)
30+
.build();
31+
// verify that AwsXrayPropagator is usable, if agent has not shaded AwsXrayPropagator this will
32+
// fail with NoSuchMethodError
33+
AwsXrayPropagator.getInstance()
34+
.extract(
35+
Context.root(),
36+
Collections.singletonMap(
37+
"X-Amzn-Trace-Id",
38+
"Root=1-35a77be2-beae321878f706079d392ac3;Parent=df79f9d51134dc0b;Sampled=1"),
39+
StringMapGetter.INSTANCE);
40+
}
41+
42+
private enum StringMapGetter implements TextMapGetter<Map<String, String>> {
43+
INSTANCE;
44+
45+
@Override
46+
public Iterable<String> keys(Map<String, String> map) {
47+
return map.keySet();
48+
}
49+
50+
@Override
51+
public String get(Map<String, String> map, String s) {
52+
return map.get(s);
53+
}
54+
}
55+
}

instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/test/java/QueryProtocolModelTest.java instrumentation/aws-sdk/aws-sdk-2.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v2_2/QueryProtocolModelTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6+
package io.opentelemetry.javaagent.instrumentation.awssdk.v2_2;
7+
68
import io.opentelemetry.instrumentation.awssdk.v2_2.AbstractQueryProtocolModelTest;
79
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
810
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/RemappingUrlConnection.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,14 @@ public class RemappingUrlConnection extends URLConnection {
3636
"#io.opentelemetry.semconv",
3737
"#io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv"),
3838
rule(
39-
"#io.opentelemetry.extension.aws",
40-
"#io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.aws"),
39+
"#io.opentelemetry.extension.incubator",
40+
"#io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.incubator"),
41+
rule(
42+
"#io.opentelemetry.contrib.awsxray",
43+
"#io.opentelemetry.javaagent.shaded.io.opentelemetry.contrib.awsxray"),
44+
rule(
45+
"#io.opentelemetry.extension.kotlin",
46+
"#io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin"),
4147
rule("#application.io.opentelemetry", "#io.opentelemetry"),
4248
rule("#java.util.logging.Logger", "#io.opentelemetry.javaagent.bootstrap.PatchLogger"));
4349

0 commit comments

Comments
 (0)