Skip to content

Commit fa3bb67

Browse files
Merge branch 'main' into 14218-preparedstatement-setobject-advice
2 parents bac4cfd + 62175ca commit fa3bb67

File tree

52 files changed

+954
-603
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+954
-603
lines changed

build.gradle.kts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,7 @@ tasks {
172172
val token = Base64.getEncoder().encodeToString("$username:$password".toByteArray())
173173

174174
var query = "?name=opentelemetry-java-instrumentation-$stableVersion"
175-
// uncomment to automatically publish the release
176-
// query += "&publishingType=AUTOMATIC"
175+
query += "&publishingType=AUTOMATIC"
177176

178177
doFirst {
179178
val bundle = generateReleaseBundle.get().outputs.files.singleFile
@@ -190,9 +189,6 @@ tasks {
190189
)
191190
.header("authorization", "Bearer $token")
192191
.build()
193-
httpClient.newCall(request).execute().use { response ->
194-
response.body.string()
195-
}
196192

197193
httpClient.newCall(request).execute().use { response ->
198194
if (response.code != 201) throw GradleException("Unexpected response status ${response.code} while uploading the release bundle")

dependencyManagement/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ val DEPENDENCY_BOMS = listOf(
3838

3939
val autoServiceVersion = "1.1.1"
4040
val autoValueVersion = "1.11.0"
41-
val errorProneVersion = "2.39.0"
41+
val errorProneVersion = "2.40.0"
4242
val byteBuddyVersion = "1.17.6"
4343
val asmVersion = "9.8"
4444
val jmhVersion = "1.37"

examples/extension/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ dependencies {
9494
Only dependencies added to `implementation` configuration will be picked up by Shadow plugin
9595
and added to the resulting jar for our extension's distribution.
9696
*/
97-
implementation 'org.apache.commons:commons-lang3:3.17.0'
97+
implementation 'org.apache.commons:commons-lang3:3.18.0'
9898

9999
//All dependencies below are only for tests
100100
testImplementation("org.testcontainers:testcontainers:1.21.3")

instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/awssdk/v1_11/AwsSpanAssertions.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT;
1616
import static io.opentelemetry.semconv.UrlAttributes.URL_FULL;
1717
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID;
18+
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SNS_TOPIC_ARN;
1819
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME;
1920
import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD;
2021
import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE;
@@ -90,6 +91,7 @@ static SpanDataAssert sns(SpanDataAssert span, String topicArn, String rpcMethod
9091
.hasAttributesSatisfyingExactly(
9192
equalTo(stringKey("aws.agent"), "java-aws-sdk"),
9293
equalTo(MESSAGING_DESTINATION_NAME, topicArn),
94+
satisfies(AWS_SNS_TOPIC_ARN, v -> v.isInstanceOf(String.class)),
9395
satisfies(AWS_REQUEST_ID, v -> v.isInstanceOf(String.class)),
9496
equalTo(RPC_METHOD, rpcMethod),
9597
equalTo(RPC_SYSTEM, "aws-api"),

instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkAttributesExtractor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class AwsSdkAttributesExtractor implements AttributesExtractor<Request<?>, Respo
2626
// Copied from AwsIncubatingAttributes
2727
private static final AttributeKey<String> AWS_SECRETSMANAGER_SECRET_ARN =
2828
stringKey("aws.secretsmanager.secret.arn");
29+
private static final AttributeKey<String> AWS_SNS_TOPIC_ARN = stringKey("aws.sns.topic.arn");
2930
private static final AttributeKey<String> AWS_STEP_FUNCTIONS_ACTIVITY_ARN =
3031
stringKey("aws.step_functions.activity.arn");
3132
private static final AttributeKey<String> AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN =
@@ -45,6 +46,7 @@ private static boolean canGetResponseMetadata() {
4546
@Override
4647
public void onStart(AttributesBuilder attributes, Context parentContext, Request<?> request) {
4748
Object originalRequest = request.getOriginalRequest();
49+
setAttribute(attributes, AWS_SNS_TOPIC_ARN, originalRequest, RequestAccess::getSnsTopicArn);
4850
setAttribute(
4951
attributes,
5052
AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN,
@@ -67,6 +69,7 @@ public void onEnd(
6769
Object awsResp = getAwsResponse(response);
6870
if (awsResp != null) {
6971
setAttribute(attributes, AWS_SECRETSMANAGER_SECRET_ARN, awsResp, RequestAccess::getSecretArn);
72+
setAttribute(attributes, AWS_SNS_TOPIC_ARN, awsResp, RequestAccess::getSnsTopicArn);
7073
setAttribute(
7174
attributes,
7275
AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN,

instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/RequestAccess.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ static String getTableName(Object request) {
7373
}
7474

7575
@Nullable
76-
static String getTopicArn(Object request) {
76+
static String getSnsTopicArn(Object request) {
7777
RequestAccess access = REQUEST_ACCESSORS.get(request.getClass());
7878
return invokeOrNull(access.getTopicArn, request);
7979
}

instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/SnsAttributesExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public void onStart(AttributesBuilder attributes, Context parentContext, Request
3232
* falling back to the target ARN. If neither is found null is returned.
3333
*/
3434
private static String findMessageDestination(AmazonWebServiceRequest request) {
35-
String destination = RequestAccess.getTopicArn(request);
35+
String destination = RequestAccess.getSnsTopicArn(request);
3636
if (destination != null) {
3737
return destination;
3838
}

instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSnsClientTest.java

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@
66
package io.opentelemetry.instrumentation.awssdk.v1_11;
77

88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
9+
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_SNS_TOPIC_ARN;
910
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_DESTINATION_NAME;
11+
import static java.util.Arrays.asList;
1012
import static java.util.Collections.singletonList;
1113

1214
import com.amazonaws.services.sns.AmazonSNS;
1315
import com.amazonaws.services.sns.AmazonSNSClientBuilder;
16+
import com.amazonaws.services.sns.model.CreateTopicRequest;
1417
import com.amazonaws.services.sns.model.PublishRequest;
1518
import io.opentelemetry.sdk.testing.assertj.AttributeAssertion;
1619
import io.opentelemetry.testing.internal.armeria.common.HttpResponse;
@@ -24,6 +27,25 @@
2427
import org.junit.jupiter.params.provider.MethodSource;
2528

2629
public abstract class AbstractSnsClientTest extends AbstractBaseAwsClientTest {
30+
private static final String publishResponseBody =
31+
"<PublishResponse xmlns=\"https://sns.amazonaws.com/doc/2010-03-31/\">"
32+
+ " <PublishResult>"
33+
+ " <MessageId>567910cd-659e-55d4-8ccb-5aaf14679dc0</MessageId>"
34+
+ " </PublishResult>"
35+
+ " <ResponseMetadata>"
36+
+ " <RequestId>d74b8436-ae13-5ab4-a9ff-ce54dfea72a0</RequestId>"
37+
+ " </ResponseMetadata>"
38+
+ "</PublishResponse>";
39+
40+
private static final String createTopicResponseBody =
41+
"<CreateTopicResponse xmlns=\"https://sns.amazonaws.com/doc/2010-03-31/\">"
42+
+ " <CreateTopicResult>"
43+
+ " <TopicArn>arn:aws:sns:us-east-1:123456789012:sns-topic-foo</TopicArn>"
44+
+ " </CreateTopicResult>"
45+
+ " <ResponseMetadata>"
46+
+ " <RequestId>d74b8436-ae13-5ab4-a9ff-ce54dfea72a0</RequestId>"
47+
+ " </ResponseMetadata>"
48+
+ "</CreateTopicResponse>";
2749

2850
public abstract AmazonSNSClientBuilder configureClient(AmazonSNSClientBuilder client);
2951

@@ -34,32 +56,23 @@ protected boolean hasRequestId() {
3456

3557
@ParameterizedTest
3658
@MethodSource("provideArguments")
37-
public void testSendRequestWithMockedResponse(Function<AmazonSNS, Object> call) throws Exception {
59+
void testSendRequestWithMockedResponse(
60+
Function<AmazonSNS, Object> call,
61+
String operation,
62+
String responseBody,
63+
List<AttributeAssertion> additionalAttributes)
64+
throws Exception {
3865
AmazonSNSClientBuilder clientBuilder = AmazonSNSClientBuilder.standard();
3966
AmazonSNS client =
4067
configureClient(clientBuilder)
4168
.withEndpointConfiguration(endpoint)
4269
.withCredentials(credentialsProvider)
4370
.build();
4471

45-
String body =
46-
"<PublishResponse xmlns=\"https://sns.amazonaws.com/doc/2010-03-31/\">"
47-
+ " <PublishResult>"
48-
+ " <MessageId>567910cd-659e-55d4-8ccb-5aaf14679dc0</MessageId>"
49-
+ " </PublishResult>"
50-
+ " <ResponseMetadata>"
51-
+ " <RequestId>d74b8436-ae13-5ab4-a9ff-ce54dfea72a0</RequestId>"
52-
+ " </ResponseMetadata>"
53-
+ "</PublishResponse>";
54-
55-
server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, body));
56-
57-
List<AttributeAssertion> additionalAttributes =
58-
singletonList(equalTo(MESSAGING_DESTINATION_NAME, "somearn"));
59-
72+
server.enqueue(HttpResponse.of(HttpStatus.OK, MediaType.PLAIN_TEXT_UTF_8, responseBody));
6073
Object response = call.apply(client);
6174
assertRequestWithMockedResponse(
62-
response, client, "SNS", "Publish", "POST", additionalAttributes);
75+
response, client, "SNS", operation, "POST", additionalAttributes);
6376
}
6477

6578
private static Stream<Arguments> provideArguments() {
@@ -68,11 +81,26 @@ private static Stream<Arguments> provideArguments() {
6881
(Function<AmazonSNS, Object>)
6982
c ->
7083
c.publish(
71-
new PublishRequest().withMessage("somemessage").withTopicArn("somearn"))),
84+
new PublishRequest().withMessage("somemessage").withTopicArn("somearn")),
85+
"Publish",
86+
publishResponseBody,
87+
asList(
88+
equalTo(MESSAGING_DESTINATION_NAME, "somearn"),
89+
equalTo(AWS_SNS_TOPIC_ARN, "somearn"))),
7290
Arguments.of(
7391
(Function<AmazonSNS, Object>)
7492
c ->
7593
c.publish(
76-
new PublishRequest().withMessage("somemessage").withTargetArn("somearn"))));
94+
new PublishRequest().withMessage("somemessage").withTargetArn("somearn")),
95+
"Publish",
96+
publishResponseBody,
97+
singletonList(equalTo(MESSAGING_DESTINATION_NAME, "somearn"))),
98+
Arguments.of(
99+
(Function<AmazonSNS, Object>)
100+
c -> c.createTopic(new CreateTopicRequest().withName("sns-topic-foo")),
101+
"CreateTopic",
102+
createTopicResponseBody,
103+
singletonList(
104+
equalTo(AWS_SNS_TOPIC_ARN, "arn:aws:sns:us-east-1:123456789012:sns-topic-foo"))));
77105
}
78106
}

instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/AwsSdkRequestType.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ enum AwsSdkRequestType {
2626
* Only one of TopicArn and TargetArn are permitted on an SNS request.
2727
*/
2828
request(AttributeKeys.MESSAGING_DESTINATION_NAME.getKey(), "TargetArn"),
29-
request(AttributeKeys.MESSAGING_DESTINATION_NAME.getKey(), "TopicArn")),
29+
request(AttributeKeys.MESSAGING_DESTINATION_NAME.getKey(), "TopicArn"),
30+
request(AttributeKeys.AWS_SNS_TOPIC_ARN.getKey(), "TopicArn"),
31+
response(AttributeKeys.AWS_SNS_TOPIC_ARN.getKey(), "TopicArn")),
3032
STEPFUNCTIONS(
3133
request(AttributeKeys.AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN.getKey(), "stateMachineArn"),
3234
request(AttributeKeys.AWS_STEP_FUNCTIONS_ACTIVITY_ARN.getKey(), "activityArn"));
@@ -47,6 +49,7 @@ private static class AttributeKeys {
4749
// Copied from AwsIncubatingAttributes
4850
static final AttributeKey<String> AWS_SECRETSMANAGER_SECRET_ARN =
4951
stringKey("aws.secretsmanager.secret.arn");
52+
static final AttributeKey<String> AWS_SNS_TOPIC_ARN = stringKey("aws.sns.topic.arn");
5053
static final AttributeKey<String> AWS_STEP_FUNCTIONS_ACTIVITY_ARN =
5154
stringKey("aws.step_functions.activity.arn");
5255
static final AttributeKey<String> AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN =

0 commit comments

Comments
 (0)