Skip to content

Commit c734335

Browse files
authored
dynamodb: removing reference to field only available in newer versions of the sdk (#2118)
1 parent 00f7b8d commit c734335

File tree

2 files changed

+8
-31
lines changed

2 files changed

+8
-31
lines changed

instrumentation/aws-java-sdk-dynamodb-2.15.34/src/main/java/com/nr/instrumentation/dynamodb_v2/DynamoDBMetricUtil.java

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.newrelic.api.agent.NewRelic;
88
import com.newrelic.api.agent.TracedMethod;
99
import software.amazon.awssdk.awscore.client.config.AwsClientOption;
10-
import software.amazon.awssdk.awscore.util.AwsHostNameUtils;
1110
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
1211
import software.amazon.awssdk.core.client.config.SdkClientOption;
1312
import software.amazon.awssdk.regions.Region;
@@ -58,7 +57,7 @@ static String getArn(String tableName, Object sdkClient, SdkClientConfiguration
5857
return null;
5958
}
6059

61-
String region = findRegion(clientConfiguration, host);
60+
String region = findRegion(clientConfiguration);
6261
if (region == null) {
6362
NewRelic.getAgent().getLogger().log(Level.FINEST, "Unable to assemble ARN. Region is null.");
6463
return null;
@@ -69,19 +68,11 @@ static String getArn(String tableName, Object sdkClient, SdkClientConfiguration
6968
}
7069

7170
// visible for testing
72-
static String findRegion(SdkClientConfiguration clientConfig, String host) {
73-
Boolean endpointOverridden = clientConfig.option(SdkClientOption.ENDPOINT_OVERRIDDEN);
74-
if (endpointOverridden == Boolean.TRUE) { // endpointOverridden could be null
75-
Region dynamodb = AwsHostNameUtils.parseSigningRegion(host, "dynamodb").orElse(null);
76-
return dynamodb == null ? null : dynamodb.id();
77-
}
78-
71+
static String findRegion(SdkClientConfiguration clientConfig) {
72+
// it is possible to specify an endpoint, and it may not match the region of the client
73+
// unfortunately early versions of the v2 SDK do not provide info when that happens
7974
Region awsRegion = clientConfig.option(AwsClientOption.AWS_REGION);
80-
if (awsRegion != null) {
81-
return awsRegion.id();
82-
}
83-
84-
return null;
75+
return awsRegion == null ? null : awsRegion.id();
8576
}
8677

8778
private static Integer getPort(URI endpoint) {

instrumentation/aws-java-sdk-dynamodb-2.15.34/src/test/java/com/nr/instrumentation/dynamodb_v2/DynamoDBMetricUtilTest.java

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,32 +46,18 @@ public void tearDown() {
4646
}
4747

4848
@Test
49-
public void testFindRegion_fromRegion() {
50-
String host = "dynamodb.us-west-2.amazonaws.com";
49+
public void testFindRegion() {
5150
SdkClientConfiguration clientConfig = SdkClientConfiguration.builder()
5251
.option(AwsClientOption.AWS_REGION, Region.US_WEST_2)
53-
.option(SdkClientOption.ENDPOINT, URI.create("https://" + host))
5452
.build();
55-
assertEquals("us-west-2", DynamoDBMetricUtil.findRegion(clientConfig, host));
56-
}
57-
58-
@Test
59-
public void testFindRegion_fromEndpoint() {
60-
String host = "dynamodb.ap-east-1.amazonaws.com";
61-
SdkClientConfiguration clientConfig = SdkClientConfiguration.builder()
62-
.option(AwsClientOption.AWS_REGION, Region.US_WEST_2)
63-
.option(SdkClientOption.ENDPOINT, URI.create("https://" + host))
64-
.option(SdkClientOption.ENDPOINT_OVERRIDDEN, Boolean.TRUE)
65-
.build();
66-
assertEquals("ap-east-1", DynamoDBMetricUtil.findRegion(clientConfig, host));
53+
assertEquals("us-west-2", DynamoDBMetricUtil.findRegion(clientConfig));
6754
}
6855

6956
@Test
7057
public void testFindRegion_fail() {
7158
SdkClientConfiguration clientConfig = SdkClientConfiguration.builder()
7259
.build();
73-
String host = null;
74-
assertNull(DynamoDBMetricUtil.findRegion(clientConfig, host));
60+
assertNull(DynamoDBMetricUtil.findRegion(clientConfig));
7561
}
7662

7763

0 commit comments

Comments
 (0)