Skip to content

Commit 110e858

Browse files
authored
Reuse computed checkums for async payloads (#6441)
* Reuse computed checkums for async payloads This is a continuation of #6413 that adds support for checksum reuse on async payloads. Additionally, this commit renames references to "ChecksumCache" to "ChecksumStore". * Fix cross module issue
1 parent 8915ee7 commit 110e858

File tree

17 files changed

+301
-68
lines changed

17 files changed

+301
-68
lines changed

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/crt/internal/signer/AwsChunkedV4aPayloadSigner.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ private AwsChunkedV4aPayloadSigner(Builder builder) {
6666
this.credentialScope = Validate.paramNotNull(builder.credentialScope, "CredentialScope");
6767
this.chunkSize = Validate.isPositive(builder.chunkSize, "ChunkSize");
6868
this.checksumAlgorithm = builder.checksumAlgorithm;
69-
this.payloadChecksumStore = builder.payloadChecksumStore == null ? NoOpPayloadChecksumStore.create() :
70-
builder.payloadChecksumStore;
69+
this.payloadChecksumStore = builder.checksumStore == null ? NoOpPayloadChecksumStore.create() :
70+
builder.checksumStore;
7171
}
7272

7373
public static Builder builder() {
@@ -282,7 +282,7 @@ static final class Builder {
282282
private CredentialScope credentialScope;
283283
private Integer chunkSize;
284284
private ChecksumAlgorithm checksumAlgorithm;
285-
private PayloadChecksumStore payloadChecksumStore;
285+
private PayloadChecksumStore checksumStore;
286286

287287
public Builder credentialScope(CredentialScope credentialScope) {
288288
this.credentialScope = credentialScope;
@@ -299,8 +299,8 @@ public Builder checksumAlgorithm(ChecksumAlgorithm checksumAlgorithm) {
299299
return this;
300300
}
301301

302-
public Builder checksumCache(PayloadChecksumStore checksumCache) {
303-
this.payloadChecksumStore = checksumCache;
302+
public Builder checksumStore(PayloadChecksumStore checksumStore) {
303+
this.checksumStore = checksumStore;
304304
return this;
305305
}
306306

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/crt/internal/signer/DefaultAwsCrtV4aHttpSigner.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.CredentialUtils.sanitizeCredentials;
3434
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerConstant.PRESIGN_URL_MAX_EXPIRATION_DURATION;
3535
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerConstant.X_AMZ_TRAILER;
36-
import static software.amazon.awssdk.http.auth.spi.signer.SdkInternalHttpSignerProperty.CHECKSUM_CACHE;
36+
import static software.amazon.awssdk.http.auth.spi.signer.SdkInternalHttpSignerProperty.CHECKSUM_STORE;
3737

3838
import java.time.Clock;
3939
import java.time.Duration;
@@ -73,7 +73,7 @@ public final class DefaultAwsCrtV4aHttpSigner implements AwsV4aHttpSigner {
7373

7474
@Override
7575
public SignedRequest sign(SignRequest<? extends AwsCredentialsIdentity> request) {
76-
Checksummer checksummer = checksummer(request, null, checksumCache(request));
76+
Checksummer checksummer = checksummer(request, null, checksumStore(request));
7777
V4aProperties v4aProperties = v4aProperties(request);
7878
AwsSigningConfig signingConfig = signingConfig(request, v4aProperties);
7979
V4aPayloadSigner payloadSigner = v4aPayloadSigner(request, v4aProperties);
@@ -120,7 +120,7 @@ private static V4aPayloadSigner v4aPayloadSigner(
120120
.credentialScope(v4aProperties.getCredentialScope())
121121
.chunkSize(DEFAULT_CHUNK_SIZE_IN_BYTES)
122122
.checksumAlgorithm(request.property(CHECKSUM_ALGORITHM))
123-
.checksumCache(checksumCache(request))
123+
.checksumStore(checksumStore(request))
124124
.build();
125125
}
126126

@@ -257,8 +257,8 @@ private static V4aRequestSigningResult sign(SdkHttpRequest request, HttpRequest
257257
signingConfig);
258258
}
259259

260-
private static PayloadChecksumStore checksumCache(SignRequest<? extends AwsCredentialsIdentity> request) {
261-
PayloadChecksumStore cache = request.property(CHECKSUM_CACHE);
260+
private static PayloadChecksumStore checksumStore(SignRequest<? extends AwsCredentialsIdentity> request) {
261+
PayloadChecksumStore cache = request.property(CHECKSUM_STORE);
262262
if (cache == null) {
263263
return NoOpPayloadChecksumStore.create();
264264
}

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/internal/signer/AwsChunkedV4PayloadSigner.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ private AwsChunkedV4PayloadSigner(Builder builder) {
6969
this.credentialScope = Validate.paramNotNull(builder.credentialScope, "CredentialScope");
7070
this.chunkSize = Validate.isPositive(builder.chunkSize, "ChunkSize");
7171
this.checksumAlgorithm = builder.checksumAlgorithm;
72-
this.payloadChecksumStore = builder.payloadChecksumStore == null ? NoOpPayloadChecksumStore.create() :
73-
builder.payloadChecksumStore;
72+
this.payloadChecksumStore = builder.checksumStore == null ? NoOpPayloadChecksumStore.create() :
73+
builder.checksumStore;
7474
}
7575

7676
public static Builder builder() {
@@ -301,7 +301,7 @@ static class Builder {
301301
private CredentialScope credentialScope;
302302
private Integer chunkSize;
303303
private ChecksumAlgorithm checksumAlgorithm;
304-
private PayloadChecksumStore payloadChecksumStore;
304+
private PayloadChecksumStore checksumStore;
305305

306306
public Builder credentialScope(CredentialScope credentialScope) {
307307
this.credentialScope = credentialScope;
@@ -318,8 +318,8 @@ public Builder checksumAlgorithm(ChecksumAlgorithm checksumAlgorithm) {
318318
return this;
319319
}
320320

321-
public Builder checksumCache(PayloadChecksumStore payloadChecksumStore) {
322-
this.payloadChecksumStore = payloadChecksumStore;
321+
public Builder checksumStore(PayloadChecksumStore checksumStore) {
322+
this.checksumStore = checksumStore;
323323
return this;
324324
}
325325

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/internal/signer/DefaultAwsV4HttpSigner.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.OptionalDependencyLoaderUtil.getEventStreamV4PayloadSigner;
2525
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerConstant.PRESIGN_URL_MAX_EXPIRATION_DURATION;
2626
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.SignerConstant.X_AMZ_TRAILER;
27-
import static software.amazon.awssdk.http.auth.spi.signer.SdkInternalHttpSignerProperty.CHECKSUM_CACHE;
27+
import static software.amazon.awssdk.http.auth.spi.signer.SdkInternalHttpSignerProperty.CHECKSUM_STORE;
2828

2929
import java.time.Clock;
3030
import java.time.Duration;
@@ -57,7 +57,7 @@ public final class DefaultAwsV4HttpSigner implements AwsV4HttpSigner {
5757

5858
@Override
5959
public SignedRequest sign(SignRequest<? extends AwsCredentialsIdentity> request) {
60-
Checksummer checksummer = checksummer(request, null, checksumCache(request));
60+
Checksummer checksummer = checksummer(request, null, checksumStore(request));
6161
V4Properties v4Properties = v4Properties(request);
6262
V4RequestSigner v4RequestSigner = v4RequestSigner(request, v4Properties);
6363
V4PayloadSigner payloadSigner = v4PayloadSigner(request, v4Properties);
@@ -170,7 +170,7 @@ private static V4PayloadSigner v4PayloadSigner(
170170
return AwsChunkedV4PayloadSigner.builder()
171171
.credentialScope(properties.getCredentialScope())
172172
.chunkSize(DEFAULT_CHUNK_SIZE_IN_BYTES)
173-
.checksumCache(checksumCache(request))
173+
.checksumStore(checksumStore(request))
174174
.checksumAlgorithm(request.property(CHECKSUM_ALGORITHM))
175175
.build();
176176
}
@@ -265,8 +265,8 @@ private static boolean isBetweenInclusive(Duration start, Duration x, Duration e
265265
return start.compareTo(x) <= 0 && x.compareTo(end) <= 0;
266266
}
267267

268-
private static PayloadChecksumStore checksumCache(SignRequest<? extends AwsCredentialsIdentity> request) {
269-
PayloadChecksumStore cache = request.property(CHECKSUM_CACHE);
268+
private static PayloadChecksumStore checksumStore(SignRequest<? extends AwsCredentialsIdentity> request) {
269+
PayloadChecksumStore cache = request.property(CHECKSUM_STORE);
270270
if (cache == null) {
271271
return NoOpPayloadChecksumStore.create();
272272
}

core/http-auth-aws/src/main/java/software/amazon/awssdk/http/auth/aws/internal/signer/chunkedencoding/ChecksumTrailerProvider.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ public class ChecksumTrailerProvider implements TrailerProvider {
3030
private final SdkChecksum checksum;
3131
private final String checksumName;
3232
private final ChecksumAlgorithm checksumAlgorithm;
33-
private final PayloadChecksumStore checksumCache;
33+
private final PayloadChecksumStore checksumStore;
3434

3535
public ChecksumTrailerProvider(SdkChecksum checksum, String checksumName, ChecksumAlgorithm checksumAlgorithm,
36-
PayloadChecksumStore checksumCache) {
36+
PayloadChecksumStore checksumStore) {
3737
this.checksum = checksum;
3838
this.checksumName = checksumName;
3939
this.checksumAlgorithm = checksumAlgorithm;
40-
this.checksumCache = checksumCache;
40+
this.checksumStore = checksumStore;
4141
}
4242

4343
@Override
@@ -47,10 +47,10 @@ public void reset() {
4747

4848
@Override
4949
public Pair<String, List<String>> get() {
50-
byte[] checksumBytes = checksumCache.getChecksumValue(checksumAlgorithm);
50+
byte[] checksumBytes = checksumStore.getChecksumValue(checksumAlgorithm);
5151
if (checksumBytes == null) {
5252
checksumBytes = checksum.getChecksumBytes();
53-
checksumCache.putChecksumValue(checksumAlgorithm, checksumBytes);
53+
checksumStore.putChecksumValue(checksumAlgorithm, checksumBytes);
5454
}
5555

5656
return Pair.of(

core/http-auth-aws/src/test/java/software/amazon/awssdk/http/auth/aws/crt/internal/signer/DefaultAwsCrtV4aHttpSignerTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import static software.amazon.awssdk.http.auth.aws.signer.AwsV4aHttpSigner.PAYLOAD_SIGNING_ENABLED;
4545
import static software.amazon.awssdk.http.auth.aws.signer.AwsV4aHttpSigner.REGION_SET;
4646
import static software.amazon.awssdk.http.auth.spi.signer.HttpSigner.SIGNING_CLOCK;
47-
import static software.amazon.awssdk.http.auth.spi.signer.SdkInternalHttpSignerProperty.CHECKSUM_CACHE;
47+
import static software.amazon.awssdk.http.auth.spi.signer.SdkInternalHttpSignerProperty.CHECKSUM_STORE;
4848

4949
import java.io.ByteArrayInputStream;
5050
import java.io.IOException;
@@ -461,7 +461,7 @@ void sign_WithPayloadSigningTrue_chunkEncodingFalse_cacheContainsChecksum_usesCa
461461
signRequest -> signRequest
462462
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
463463
.putProperty(CHUNK_ENCODING_ENABLED, false)
464-
.putProperty(CHECKSUM_CACHE, cache)
464+
.putProperty(CHECKSUM_STORE, cache)
465465
);
466466

467467
SignedRequest signedRequest = signer.sign(request);
@@ -480,7 +480,7 @@ void sign_WithPayloadSigningTrue_chunkEncodingFalse_cacheEmpty_storesComputedChe
480480
signRequest -> signRequest
481481
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
482482
.putProperty(CHUNK_ENCODING_ENABLED, false)
483-
.putProperty(CHECKSUM_CACHE, cache)
483+
.putProperty(CHECKSUM_STORE, cache)
484484
);
485485

486486
SignedRequest signedRequest = signer.sign(request);
@@ -502,7 +502,7 @@ void sign_WithPayloadSigningFalse_chunkEncodingTrue_cacheEmpty_storesComputedChe
502502
.putProperty(PAYLOAD_SIGNING_ENABLED, false)
503503
.putProperty(CHUNK_ENCODING_ENABLED, true)
504504
.putProperty(CHECKSUM_ALGORITHM, CRC32)
505-
.putProperty(CHECKSUM_CACHE, cache)
505+
.putProperty(CHECKSUM_STORE, cache)
506506
);
507507

508508
SignedRequest signedRequest = signer.sign(request);
@@ -529,7 +529,7 @@ void sign_WithPayloadSigningFalse_chunkEncodingTrue_cacheContainsChecksum_usesCa
529529
.putProperty(PAYLOAD_SIGNING_ENABLED, false)
530530
.putProperty(CHUNK_ENCODING_ENABLED, true)
531531
.putProperty(CHECKSUM_ALGORITHM, CRC32)
532-
.putProperty(CHECKSUM_CACHE, cache)
532+
.putProperty(CHECKSUM_STORE, cache)
533533
);
534534

535535
SignedRequest signedRequest = signer.sign(request);
@@ -553,7 +553,7 @@ void sign_withPayloadSigningTrue_chunkEncodingFalse_withChecksum_cacheContainsCr
553553
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
554554
.putProperty(CHUNK_ENCODING_ENABLED, false)
555555
.putProperty(CHECKSUM_ALGORITHM, CRC32)
556-
.putProperty(CHECKSUM_CACHE, cache)
556+
.putProperty(CHECKSUM_STORE, cache)
557557
);
558558

559559
SignedRequest signedRequest = signer.sign(request);
@@ -574,7 +574,7 @@ void sign_withPayloadSigningTrue_chunkEncodingFalse_withChecksum_cacheEmpty_stor
574574
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
575575
.putProperty(CHUNK_ENCODING_ENABLED, false)
576576
.putProperty(CHECKSUM_ALGORITHM, CRC32)
577-
.putProperty(CHECKSUM_CACHE, cache)
577+
.putProperty(CHECKSUM_STORE, cache)
578578
);
579579

580580
signer.sign(request);

core/http-auth-aws/src/test/java/software/amazon/awssdk/http/auth/aws/internal/signer/DefaultAwsV4HttpSignerTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import static software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner.CHUNK_ENCODING_ENABLED;
2929
import static software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner.EXPIRATION_DURATION;
3030
import static software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner.PAYLOAD_SIGNING_ENABLED;
31-
import static software.amazon.awssdk.http.auth.spi.signer.SdkInternalHttpSignerProperty.CHECKSUM_CACHE;
31+
import static software.amazon.awssdk.http.auth.spi.signer.SdkInternalHttpSignerProperty.CHECKSUM_STORE;
3232

3333
import java.io.IOException;
3434
import java.net.URI;
@@ -882,7 +882,7 @@ void sign_WithPayloadSigningTrue_chunkEncodingFalse_cacheContainsChecksum_usesCa
882882
signRequest -> signRequest
883883
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
884884
.putProperty(CHUNK_ENCODING_ENABLED, false)
885-
.putProperty(CHECKSUM_CACHE, cache)
885+
.putProperty(CHECKSUM_STORE, cache)
886886
);
887887

888888
SignedRequest signedRequest = signer.sign(request);
@@ -901,7 +901,7 @@ void sign_WithPayloadSigningTrue_chunkEncodingFalse_cacheEmpty_storesComputedChe
901901
signRequest -> signRequest
902902
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
903903
.putProperty(CHUNK_ENCODING_ENABLED, false)
904-
.putProperty(CHECKSUM_CACHE, cache)
904+
.putProperty(CHECKSUM_STORE, cache)
905905
);
906906

907907
SignedRequest signedRequest = signer.sign(request);
@@ -923,7 +923,7 @@ void sign_WithPayloadSigningFalse_chunkEncodingTrue_cacheEmpty_storesComputedChe
923923
.putProperty(PAYLOAD_SIGNING_ENABLED, false)
924924
.putProperty(CHUNK_ENCODING_ENABLED, true)
925925
.putProperty(CHECKSUM_ALGORITHM, CRC32)
926-
.putProperty(CHECKSUM_CACHE, cache)
926+
.putProperty(CHECKSUM_STORE, cache)
927927
);
928928

929929
SignedRequest signedRequest = signer.sign(request);
@@ -950,7 +950,7 @@ void sign_WithPayloadSigningFalse_chunkEncodingTrue_cacheContainsChecksum_usesCa
950950
.putProperty(PAYLOAD_SIGNING_ENABLED, false)
951951
.putProperty(CHUNK_ENCODING_ENABLED, true)
952952
.putProperty(CHECKSUM_ALGORITHM, CRC32)
953-
.putProperty(CHECKSUM_CACHE, cache)
953+
.putProperty(CHECKSUM_STORE, cache)
954954
);
955955

956956
SignedRequest signedRequest = signer.sign(request);
@@ -977,7 +977,7 @@ void sign_withPayloadSigningTrue_chunkEncodingFalse_withChecksum_cacheContainsCr
977977
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
978978
.putProperty(CHUNK_ENCODING_ENABLED, false)
979979
.putProperty(CHECKSUM_ALGORITHM, CRC32)
980-
.putProperty(CHECKSUM_CACHE, cache)
980+
.putProperty(CHECKSUM_STORE, cache)
981981
);
982982

983983
SignedRequest signedRequest = signer.sign(request);
@@ -998,7 +998,7 @@ void sign_withPayloadSigningTrue_chunkEncodingFalse_withChecksum_cacheEmpty_stor
998998
.putProperty(PAYLOAD_SIGNING_ENABLED, true)
999999
.putProperty(CHUNK_ENCODING_ENABLED, false)
10001000
.putProperty(CHECKSUM_ALGORITHM, CRC32)
1001-
.putProperty(CHECKSUM_CACHE, cache)
1001+
.putProperty(CHECKSUM_STORE, cache)
10021002
);
10031003

10041004
signer.sign(request);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
public final class SdkInternalHttpSignerProperty {
2626

2727
/**
28-
* A cache for storing checksums calculated for a payload.
28+
* An object for storing checksums calculated for a payload.
2929
*
3030
* <p>Note, checksums may not be relevant to some signers.
3131
*/
32-
public static final SignerProperty<PayloadChecksumStore> CHECKSUM_CACHE =
33-
SignerProperty.create(SdkInternalHttpSignerProperty.class, "ChecksumCache");
32+
public static final SignerProperty<PayloadChecksumStore> CHECKSUM_STORE =
33+
SignerProperty.create(SdkInternalHttpSignerProperty.class, "ChecksumStore");
3434

3535
private SdkInternalHttpSignerProperty() {
3636
}

core/sdk-core/src/main/java/software/amazon/awssdk/core/interceptor/SdkInternalExecutionAttribute.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,10 @@ public final class SdkInternalExecutionAttribute extends SdkExecutionAttribute {
207207
"TokenConfiguredFromEnv");
208208

209209
/**
210-
* The cache used by {@link HttpSigner} implementations to store payload checksums.
210+
* The store used by {@link HttpSigner} implementations to store payload checksums.
211211
*/
212-
public static final ExecutionAttribute<PayloadChecksumStore> CHECKSUM_CACHE =
213-
new ExecutionAttribute<>("ChecksumCache");
212+
public static final ExecutionAttribute<PayloadChecksumStore> CHECKSUM_STORE =
213+
new ExecutionAttribute<>("ChecksumStore");
214214

215215
/**
216216
* The backing attribute for RESOLVED_CHECKSUM_SPECS.

0 commit comments

Comments
 (0)