Skip to content

Commit 36348ae

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 4553e96 commit 36348ae

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

+1-1
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

+12
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)