Skip to content

Commit fb004eb

Browse files
committed
Performance improvements for SRA changes.
1. Do not call SignerProperty.toString() whenever required properties are read. 2. Check if an SdkHttpRequest is an SdkHttpFullRequest before performing a full conversion to the latter.
1 parent bb4f4bf commit fb004eb

File tree

2 files changed

+13
-1
lines changed
  • core
    • http-auth-spi/src/main/java/software/amazon/awssdk/http/auth/spi/signer
    • sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/pipeline/stages

2 files changed

+13
-1
lines changed

core/http-auth-spi/src/main/java/software/amazon/awssdk/http/auth/spi/signer/BaseSignRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ default <T> boolean hasProperty(SignerProperty<T> property) {
7070
* The value, {@link T}, is return when present, and an exception is thrown otherwise.
7171
*/
7272
default <T> T requireProperty(SignerProperty<T> property) {
73-
return Validate.notNull(property(property), property.toString() + " must not be null!");
73+
return Validate.notNull(property(property), "%s must not be null!", property);
7474
}
7575

7676
/**

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/pipeline/stages/SigningStage.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,18 @@ private <T extends Identity> SdkHttpFullRequest doSraSign(SdkHttpFullRequest req
117117
private SdkHttpFullRequest toSdkHttpFullRequest(SignedRequest signedRequest) {
118118
SdkHttpRequest request = signedRequest.request();
119119

120+
// Optimization: don't do any conversion if we can avoid it.
121+
if (request instanceof SdkHttpFullRequest) {
122+
SdkHttpFullRequest fullRequest = (SdkHttpFullRequest) request;
123+
if (signedRequest.payload().orElse(null) == fullRequest.contentStreamProvider().orElse(null)) {
124+
return fullRequest;
125+
}
126+
127+
return fullRequest.toBuilder()
128+
.contentStreamProvider(signedRequest.payload().orElse(null))
129+
.build();
130+
}
131+
120132
return SdkHttpFullRequest.builder()
121133
.contentStreamProvider(signedRequest.payload().orElse(null))
122134
.protocol(request.protocol())

0 commit comments

Comments
 (0)