From 248715067849162b72fe3f6c7136a663083aeda0 Mon Sep 17 00:00:00 2001 From: David Negrete Date: Tue, 20 Dec 2022 07:42:59 -0700 Subject: [PATCH] Use synchronized block --- .../auth/credentials/ProfileCredentialsProvider.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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();