File tree Expand file tree Collapse file tree 2 files changed +13
-5
lines changed
core/auth/src/main/java/software/amazon/awssdk/auth/credentials Expand file tree Collapse file tree 2 files changed +13
-5
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "category" : " AWS SDK for Java v2" ,
3
+ "contributor" : " " ,
4
+ "type" : " bugfix" ,
5
+ "description" : " Fix race condition that could cause a NullPointerException to be raised from ProfileCredentialsProvider."
6
+ }
Original file line number Diff line number Diff line change @@ -56,6 +56,8 @@ public final class ProfileCredentialsProvider
56
56
private final String profileName ;
57
57
private final Supplier <ProfileFile > defaultProfileFileLoader ;
58
58
59
+ private final Object credentialsProviderLock = new Object ();
60
+
59
61
/**
60
62
* @see #builder()
61
63
*/
@@ -117,9 +119,9 @@ public AwsCredentials resolveCredentials() {
117
119
}
118
120
119
121
ProfileFile cachedOrRefreshedProfileFile = refreshProfileFile ();
120
- if (isNewProfileFile (cachedOrRefreshedProfileFile )) {
121
- synchronized (this ) {
122
- if (isNewProfileFile (cachedOrRefreshedProfileFile )) {
122
+ if (shouldUpdateCredentialsProvider (cachedOrRefreshedProfileFile )) {
123
+ synchronized (credentialsProviderLock ) {
124
+ if (shouldUpdateCredentialsProvider (cachedOrRefreshedProfileFile )) {
123
125
currentProfileFile = cachedOrRefreshedProfileFile ;
124
126
handleProfileFileReload (cachedOrRefreshedProfileFile );
125
127
}
@@ -137,8 +139,8 @@ private ProfileFile refreshProfileFile() {
137
139
return profileFile .get ();
138
140
}
139
141
140
- private boolean isNewProfileFile (ProfileFile profileFile ) {
141
- return !Objects .equals (currentProfileFile , profileFile );
142
+ private boolean shouldUpdateCredentialsProvider (ProfileFile profileFile ) {
143
+ return credentialsProvider == null || !Objects .equals (currentProfileFile , profileFile );
142
144
}
143
145
144
146
@ Override
You can’t perform that action at this time.
0 commit comments