Skip to content

Commit cfa6008

Browse files
authored
Handling interrupted exception when calling CRT for signing (#2705)
1 parent 27ffdf3 commit cfa6008

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

core/auth-crt/src/main/java/software/amazon/awssdk/authcrt/signer/internal/AwsCrt4aSigningAdapter.java

+12-12
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ public SdkHttpFullRequest signRequest(SdkHttpFullRequest request, AwsSigningConf
4343
try {
4444
HttpRequest signedRequest = future.get();
4545
return requestConverter.crtRequestToHttp(request, signedRequest);
46+
} catch (InterruptedException e) {
47+
Thread.currentThread().interrupt();
48+
throw SdkClientException.create("The thread got interrupted while attempting to sign request: " + e.getMessage(), e);
4649
} catch (Exception e) {
47-
throw SdkClientException.builder()
48-
.message("Unable to sign request: " + e.getMessage())
49-
.cause(e)
50-
.build();
50+
throw SdkClientException.create("Unable to sign request: " + e.getMessage(), e);
5151
}
5252
}
5353

@@ -57,11 +57,11 @@ public SdkSigningResult sign(SdkHttpFullRequest request, AwsSigningConfig signin
5757
try {
5858
AwsSigningResult signingResult = future.get();
5959
return requestConverter.crtResultToAws(request, signingResult);
60+
} catch (InterruptedException e) {
61+
Thread.currentThread().interrupt();
62+
throw SdkClientException.create("The thread got interrupted while attempting to sign request: " + e.getMessage(), e);
6063
} catch (Exception e) {
61-
throw SdkClientException.builder()
62-
.message("Unable to sign request: " + e.getMessage())
63-
.cause(e)
64-
.build();
64+
throw SdkClientException.create("Unable to sign request: " + e.getMessage(), e);
6565
}
6666
}
6767

@@ -70,11 +70,11 @@ public byte[] signChunk(byte[] chunkBody, byte[] previousSignature, AwsSigningCo
7070
CompletableFuture<byte[]> future = AwsSigner.signChunk(crtBody, previousSignature, signingConfig);
7171
try {
7272
return future.get();
73+
} catch (InterruptedException e) {
74+
Thread.currentThread().interrupt();
75+
throw SdkClientException.create("The thread got interrupted while attempting to sign request: " + e.getMessage(), e);
7376
} catch (Exception e) {
74-
throw SdkClientException.builder()
75-
.message("Unable to sign chunk: " + e.getMessage())
76-
.cause(e)
77-
.build();
77+
throw SdkClientException.create("Unable to sign request: " + e.getMessage(), e);
7878
}
7979
}
8080

services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/handlers/EndpointAddressInterceptor.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,12 @@ public SdkHttpRequest modifyHttpRequest(Context.ModifyHttpRequest context,
6666
ConfiguredS3SdkHttpRequest configuredRequest = S3EndpointResolverFactory.getEndpointResolver(resolverFactoryContext)
6767
.applyEndpointConfiguration(resolverContext);
6868

69-
configuredRequest.signingRegionModification()
70-
.map(region -> executionAttributes.putAttribute(AwsSignerExecutionAttribute.SIGNING_REGION, region))
71-
.orElseGet(() -> executionAttributes.putAttribute(AwsSignerExecutionAttribute.SIGNING_REGION_SCOPE,
72-
RegionScope.GLOBAL));
69+
if (configuredRequest.signingRegionModification().isPresent()) {
70+
executionAttributes.putAttribute(AwsSignerExecutionAttribute.SIGNING_REGION,
71+
configuredRequest.signingRegionModification().get());
72+
} else {
73+
executionAttributes.putAttribute(AwsSignerExecutionAttribute.SIGNING_REGION_SCOPE, RegionScope.GLOBAL);
74+
}
7375

7476
configuredRequest.signingServiceModification().ifPresent(
7577
name -> executionAttributes.putAttribute(AwsSignerExecutionAttribute.SERVICE_SIGNING_NAME, name));

0 commit comments

Comments
 (0)