Skip to content

Commit 5c2529f

Browse files
authored
Performance improvements for SRA changes. (#4864)
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 40829a0 commit 5c2529f

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)