HADOOP-10826. Iteration on KeyProviderFactory.serviceLoader is thread-unsafe. (benoyantony viat tucu)
Conflicts: hadoop-common-project/hadoop-common/CHANGES.txt git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1619538 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
03f9e28a7e
commit
27609a184d
|
@ -265,6 +265,9 @@ Release 2.6.0 - UNRELEASED
|
||||||
HADOOP-10816. KeyShell returns -1 on error to the shell, should be 1.
|
HADOOP-10816. KeyShell returns -1 on error to the shell, should be 1.
|
||||||
(Mike Yoder via wang)
|
(Mike Yoder via wang)
|
||||||
|
|
||||||
|
HADOOP-10826. Iteration on KeyProviderFactory.serviceLoader is
|
||||||
|
thread-unsafe. (benoyantony viat tucu)
|
||||||
|
|
||||||
Release 2.5.0 - 2014-08-11
|
Release 2.5.0 - 2014-08-11
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ServiceLoader;
|
import java.util.ServiceLoader;
|
||||||
|
|
||||||
|
@ -47,6 +48,15 @@ public abstract class KeyProviderFactory {
|
||||||
private static final ServiceLoader<KeyProviderFactory> serviceLoader =
|
private static final ServiceLoader<KeyProviderFactory> serviceLoader =
|
||||||
ServiceLoader.load(KeyProviderFactory.class);
|
ServiceLoader.load(KeyProviderFactory.class);
|
||||||
|
|
||||||
|
// Iterate through the serviceLoader to avoid lazy loading.
|
||||||
|
// Lazy loading would require synchronization in concurrent use cases.
|
||||||
|
static {
|
||||||
|
Iterator<KeyProviderFactory> iterServices = serviceLoader.iterator();
|
||||||
|
while (iterServices.hasNext()) {
|
||||||
|
iterServices.next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static List<KeyProvider> getProviders(Configuration conf
|
public static List<KeyProvider> getProviders(Configuration conf
|
||||||
) throws IOException {
|
) throws IOException {
|
||||||
List<KeyProvider> result = new ArrayList<KeyProvider>();
|
List<KeyProvider> result = new ArrayList<KeyProvider>();
|
||||||
|
|
Loading…
Reference in New Issue