Skip to content

Commit 300c620

Browse files
authored
Cache whether CRT is available in the flexible checksum algorithm. (#4878)
1 parent c7417f0 commit 300c620

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
public class Crc32CChecksum implements SdkChecksum {
3030

3131
private static final String CRT_CLASSPATH_FOR_CRC32C = "software.amazon.awssdk.crt.checksums.CRC32C";
32+
private static final ThreadLocal<Boolean> IS_CRT_AVAILABLE = ThreadLocal.withInitial(Crc32CChecksum::isCrtAvailable);
3233

3334
private Checksum crc32c;
3435
private Checksum lastMarkedCrc32C;
@@ -37,7 +38,7 @@ public class Crc32CChecksum implements SdkChecksum {
3738
* Creates CRT Based Crc32C checksum if Crt classpath for Crc32c is loaded, else create Sdk Implemented Crc32c
3839
*/
3940
public Crc32CChecksum() {
40-
if (isCrtAvailable()) {
41+
if (IS_CRT_AVAILABLE.get()) {
4142
crc32c = new CRC32C();
4243
} else {
4344
crc32c = SdkCrc32CChecksum.create();

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,18 @@
2727
*/
2828
@SdkInternalApi
2929
public class Crc32Checksum implements SdkChecksum {
30-
3130
private static final String CRT_CLASSPATH_FOR_CRC32 = "software.amazon.awssdk.crt.checksums.CRC32";
31+
private static final ThreadLocal<Boolean> IS_CRT_AVAILABLE = ThreadLocal.withInitial(Crc32Checksum::isCrtAvailable);
3232

3333
private Checksum crc32;
3434
private Checksum lastMarkedCrc32;
3535

36+
3637
/**
3738
* Creates CRT Based Crc32 checksum if Crt classpath for Crc32 is loaded, else create Sdk Implemented Crc32.
3839
*/
3940
public Crc32Checksum() {
40-
if (isCrtAvailable()) {
41+
if (IS_CRT_AVAILABLE.get()) {
4142
crc32 = new CRC32();
4243
} else {
4344
crc32 = SdkCrc32Checksum.create();

0 commit comments

Comments
 (0)