diff --git a/core/auth/src/main/java/software/amazon/awssdk/auth/credentials/ProfileCredentialsProvider.java b/core/auth/src/main/java/software/amazon/awssdk/auth/credentials/ProfileCredentialsProvider.java index b870b4f2b814..c2eb3424bf55 100644 --- a/core/auth/src/main/java/software/amazon/awssdk/auth/credentials/ProfileCredentialsProvider.java +++ b/core/auth/src/main/java/software/amazon/awssdk/auth/credentials/ProfileCredentialsProvider.java @@ -49,7 +49,7 @@ public final class ProfileCredentialsProvider SdkAutoCloseable, ToCopyableBuilder { - private AwsCredentialsProvider credentialsProvider; + private volatile AwsCredentialsProvider credentialsProvider; private final RuntimeException loadException; private final Supplier profileFile; private volatile ProfileFile currentProfileFile; @@ -118,8 +118,12 @@ public AwsCredentials resolveCredentials() { ProfileFile cachedOrRefreshedProfileFile = refreshProfileFile(); if (isNewProfileFile(cachedOrRefreshedProfileFile)) { - currentProfileFile = cachedOrRefreshedProfileFile; - handleProfileFileReload(cachedOrRefreshedProfileFile); + synchronized (this) { + if (isNewProfileFile(cachedOrRefreshedProfileFile)) { + currentProfileFile = cachedOrRefreshedProfileFile; + handleProfileFileReload(cachedOrRefreshedProfileFile); + } + } } return credentialsProvider.resolveCredentials();