HADOOP-14195. CredentialProviderFactory$getProviders is not thread-safe. Contributed by Vihang Karajgaonkar.
(cherry picked from commit128015584d
) (cherry picked from commita92f654aa2
)
This commit is contained in:
parent
7a3f9e8fac
commit
fac5bdc023
|
@ -54,6 +54,9 @@ public abstract class CredentialProviderFactory {
|
|||
try {
|
||||
URI uri = new URI(path);
|
||||
boolean found = false;
|
||||
// Iterate serviceLoader in a synchronized block since
|
||||
// serviceLoader iterator is not thread-safe.
|
||||
synchronized (serviceLoader) {
|
||||
for (CredentialProviderFactory factory : serviceLoader) {
|
||||
CredentialProvider kp = factory.createProvider(uri, conf);
|
||||
if (kp != null) {
|
||||
|
@ -62,6 +65,7 @@ public abstract class CredentialProviderFactory {
|
|||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
throw new IOException("No CredentialProviderFactory for " + uri + " in " +
|
||||
CREDENTIAL_PROVIDER_PATH);
|
||||
|
|
Loading…
Reference in New Issue