Skip to content

Commit 194c97e

Browse files
committed
Addressed code review feedback:
1. Used constant from semconv. 2. Moved extraction code out of the experimental module.
1 parent 0ff1ba4 commit 194c97e

File tree

5 files changed

+67
-40
lines changed

5 files changed

+67
-40
lines changed

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@ final class AwsExperimentalAttributes {
1616
static final AttributeKey<String> AWS_QUEUE_NAME = stringKey("aws.queue.name");
1717
static final AttributeKey<String> AWS_STREAM_NAME = stringKey("aws.stream.name");
1818
static final AttributeKey<String> AWS_TABLE_NAME = stringKey("aws.table.name");
19-
static final AttributeKey<String> AWS_STATE_MACHINE_ARN =
20-
stringKey("aws.stepfunctions.state_machine.arn");
21-
static final AttributeKey<String> AWS_STEP_FUNCTIONS_ACTIVITY_ARN =
22-
stringKey("aws.stepfunctions.activity.arn");
2319

2420
private AwsExperimentalAttributes() {}
2521
}

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

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,19 @@
1616
import io.opentelemetry.context.Context;
1717
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
1818
import io.opentelemetry.javaagent.tooling.muzzle.NoMuzzle;
19+
import java.util.function.Function;
1920
import javax.annotation.Nullable;
2021

2122
class AwsSdkAttributesExtractor implements AttributesExtractor<Request<?>, Response<?>> {
2223
private static final boolean CAN_GET_RESPONSE_METADATA = canGetResponseMetadata();
2324
private static final AttributeKey<String> AWS_REQUEST_ID = stringKey("aws.request_id");
2425

26+
// Copied from AwsIncubatingAttributes
27+
private static final AttributeKey<String> AWS_STEP_FUNCTIONS_ACTIVITY_ARN =
28+
stringKey("aws.step_functions.activity.arn");
29+
private static final AttributeKey<String> AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN =
30+
stringKey("aws.step_functions.state_machine.arn");
31+
2532
// AmazonWebServiceResult is only available in v1.11.33 and later
2633
private static boolean canGetResponseMetadata() {
2734
try {
@@ -34,7 +41,19 @@ private static boolean canGetResponseMetadata() {
3441
}
3542

3643
@Override
37-
public void onStart(AttributesBuilder attributes, Context parentContext, Request<?> request) {}
44+
public void onStart(AttributesBuilder attributes, Context parentContext, Request<?> request) {
45+
Object originalRequest = request.getOriginalRequest();
46+
setAttribute(
47+
attributes,
48+
AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN,
49+
originalRequest,
50+
RequestAccess::getStateMachineArn);
51+
setAttribute(
52+
attributes,
53+
AWS_STEP_FUNCTIONS_ACTIVITY_ARN,
54+
originalRequest,
55+
RequestAccess::getStepFunctionsActivityArn);
56+
}
3857

3958
@Override
4059
public void onEnd(
@@ -43,8 +62,21 @@ public void onEnd(
4362
Request<?> request,
4463
@Nullable Response<?> response,
4564
@Nullable Throwable error) {
46-
ResponseMetadata responseMetadata = getResponseMetadata(response);
65+
if (response != null) {
66+
Object awsResp = response.getAwsResponse();
67+
setAttribute(
68+
attributes,
69+
AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN,
70+
awsResp,
71+
RequestAccess::getStateMachineArn);
72+
setAttribute(
73+
attributes,
74+
AWS_STEP_FUNCTIONS_ACTIVITY_ARN,
75+
awsResp,
76+
RequestAccess::getStepFunctionsActivityArn);
77+
}
4778

79+
ResponseMetadata responseMetadata = getResponseMetadata(response);
4880
if (responseMetadata != null) {
4981
String requestId = responseMetadata.getRequestId();
5082
if (requestId != null) {
@@ -63,4 +95,15 @@ private static ResponseMetadata getResponseMetadata(Response<?> response) {
6395
}
6496
return null;
6597
}
98+
99+
public static void setAttribute(
100+
AttributesBuilder attributes,
101+
AttributeKey<String> key,
102+
Object carrier,
103+
Function<Object, String> getter) {
104+
String value = getter.apply(carrier);
105+
if (value != null) {
106+
attributes.put(key, value);
107+
}
108+
}
66109
}

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

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_BUCKET_NAME;
1010
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_QUEUE_NAME;
1111
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_QUEUE_URL;
12-
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_STATE_MACHINE_ARN;
13-
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_STEP_FUNCTIONS_ACTIVITY_ARN;
1412
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_STREAM_NAME;
1513
import static io.opentelemetry.instrumentation.awssdk.v1_11.AwsExperimentalAttributes.AWS_TABLE_NAME;
1614

@@ -37,13 +35,6 @@ public void onStart(AttributesBuilder attributes, Context parentContext, Request
3735
setRequestAttribute(attributes, AWS_QUEUE_NAME, originalRequest, RequestAccess::getQueueName);
3836
setRequestAttribute(attributes, AWS_STREAM_NAME, originalRequest, RequestAccess::getStreamName);
3937
setRequestAttribute(attributes, AWS_TABLE_NAME, originalRequest, RequestAccess::getTableName);
40-
setRequestAttribute(
41-
attributes, AWS_STATE_MACHINE_ARN, originalRequest, RequestAccess::getStateMachineArn);
42-
setRequestAttribute(
43-
attributes,
44-
AWS_STEP_FUNCTIONS_ACTIVITY_ARN,
45-
originalRequest,
46-
RequestAccess::getStepFunctionsActivityArn);
4738
}
4839

4940
private static void setRequestAttribute(
@@ -63,16 +54,5 @@ public void onEnd(
6354
Context context,
6455
Request<?> request,
6556
@Nullable Response<?> response,
66-
@Nullable Throwable error) {
67-
if (response != null) {
68-
Object awsResp = response.getAwsResponse();
69-
setRequestAttribute(
70-
attributes, AWS_STATE_MACHINE_ARN, awsResp, RequestAccess::getStateMachineArn);
71-
setRequestAttribute(
72-
attributes,
73-
AWS_STEP_FUNCTIONS_ACTIVITY_ARN,
74-
awsResp,
75-
RequestAccess::getStepFunctionsActivityArn);
76-
}
77-
}
57+
@Nullable Throwable error) {}
7858
}

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

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,20 +94,17 @@ private static String invokeOrNull(@Nullable MethodHandle method, Object obj) {
9494
}
9595
}
9696

97-
@Nullable private MethodHandle getBucketName;
98-
@Nullable private MethodHandle getQueueUrl;
99-
@Nullable private MethodHandle getQueueName;
97+
@Nullable private final MethodHandle getBucketName;
98+
@Nullable private final MethodHandle getQueueUrl;
99+
@Nullable private final MethodHandle getQueueName;
100+
@Nullable private final MethodHandle getStreamName;
101+
@Nullable private final MethodHandle getTableName;
102+
@Nullable private final MethodHandle getTopicArn;
103+
@Nullable private final MethodHandle getTargetArn;
100104
@Nullable private MethodHandle getStateMachineArn;
101105
@Nullable private MethodHandle getStepFunctionsActivityArn;
102-
@Nullable private MethodHandle getStreamName;
103-
@Nullable private MethodHandle getTableName;
104-
@Nullable private MethodHandle getTopicArn;
105-
@Nullable private MethodHandle getTargetArn;
106106

107107
private RequestAccess(Class<?> clz) {
108-
if (clz == null) {
109-
return;
110-
}
111108
getBucketName = findAccessorOrNull(clz, "getBucketName");
112109
getQueueUrl = findAccessorOrNull(clz, "getQueueUrl");
113110
getQueueName = findAccessorOrNull(clz, "getQueueName");

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

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.amazonaws.services.stepfunctions.AWSStepFunctionsClientBuilder;
1414
import com.amazonaws.services.stepfunctions.model.DescribeActivityRequest;
1515
import com.amazonaws.services.stepfunctions.model.DescribeStateMachineRequest;
16+
import io.opentelemetry.api.common.AttributeKey;
1617
import io.opentelemetry.sdk.testing.assertj.AttributeAssertion;
1718
import io.opentelemetry.testing.internal.armeria.common.HttpResponse;
1819
import io.opentelemetry.testing.internal.armeria.common.HttpStatus;
@@ -26,6 +27,17 @@
2627

2728
public abstract class AbstractStepFunctionsClientTest extends AbstractBaseAwsClientTest {
2829

30+
// Copied from semconv. These two keys are not available in the current version of semconv.
31+
// They can be replaced with direct imports when the new version of semconv is in.
32+
// import static
33+
// io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_STEP_FUNCTIONS_ACTIVITY_ARN;
34+
// import static
35+
// io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN;
36+
private static final AttributeKey<String> AWS_STEP_FUNCTIONS_ACTIVITY_ARN =
37+
stringKey("aws.step_functions.activity.arn");
38+
private static final AttributeKey<String> AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN =
39+
stringKey("aws.step_functions.state_machine.arn");
40+
2941
public abstract AWSStepFunctionsClientBuilder configureClient(
3042
AWSStepFunctionsClientBuilder client);
3143

@@ -61,15 +73,14 @@ private static Stream<Arguments> provideArguments() {
6173
return Stream.of(
6274
Arguments.of(
6375
"DescribeStateMachine",
64-
singletonList(
65-
equalTo(stringKey("aws.stepfunctions.state_machine.arn"), "stateMachineArn")),
76+
singletonList(equalTo(AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN, "stateMachineArn")),
6677
(Function<AWSStepFunctions, Object>)
6778
c ->
6879
c.describeStateMachine(
6980
new DescribeStateMachineRequest().withStateMachineArn("stateMachineArn"))),
7081
Arguments.of(
7182
"DescribeActivity",
72-
singletonList(equalTo(stringKey("aws.stepfunctions.activity.arn"), "activityArn")),
83+
singletonList(equalTo(AWS_STEP_FUNCTIONS_ACTIVITY_ARN, "activityArn")),
7384
(Function<AWSStepFunctions, Object>)
7485
c ->
7586
c.describeActivity(

0 commit comments

Comments
 (0)