|
@@ -24,8 +24,10 @@ import java.net.InetSocketAddress;
|
|
import java.security.PrivilegedExceptionAction;
|
|
import java.security.PrivilegedExceptionAction;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.ServiceConfigurationError;
|
|
import java.util.ServiceLoader;
|
|
import java.util.ServiceLoader;
|
|
|
|
|
|
|
|
+import com.google.common.annotations.VisibleForTesting;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.hadoop.classification.InterfaceAudience;
|
|
import org.apache.hadoop.classification.InterfaceAudience;
|
|
@@ -53,7 +55,7 @@ public class Cluster {
|
|
|
|
|
|
@InterfaceStability.Evolving
|
|
@InterfaceStability.Evolving
|
|
public static enum JobTrackerStatus {INITIALIZING, RUNNING};
|
|
public static enum JobTrackerStatus {INITIALIZING, RUNNING};
|
|
-
|
|
|
|
|
|
+
|
|
private ClientProtocolProvider clientProtocolProvider;
|
|
private ClientProtocolProvider clientProtocolProvider;
|
|
private ClientProtocol client;
|
|
private ClientProtocol client;
|
|
private UserGroupInformation ugi;
|
|
private UserGroupInformation ugi;
|
|
@@ -64,7 +66,8 @@ public class Cluster {
|
|
private Path jobHistoryDir = null;
|
|
private Path jobHistoryDir = null;
|
|
private static final Log LOG = LogFactory.getLog(Cluster.class);
|
|
private static final Log LOG = LogFactory.getLog(Cluster.class);
|
|
|
|
|
|
- private static ServiceLoader<ClientProtocolProvider> frameworkLoader =
|
|
|
|
|
|
+ @VisibleForTesting
|
|
|
|
+ static Iterable<ClientProtocolProvider> frameworkLoader =
|
|
ServiceLoader.load(ClientProtocolProvider.class);
|
|
ServiceLoader.load(ClientProtocolProvider.class);
|
|
private volatile List<ClientProtocolProvider> providerList = null;
|
|
private volatile List<ClientProtocolProvider> providerList = null;
|
|
|
|
|
|
@@ -74,8 +77,15 @@ public class Cluster {
|
|
if (providerList == null) {
|
|
if (providerList == null) {
|
|
List<ClientProtocolProvider> localProviderList =
|
|
List<ClientProtocolProvider> localProviderList =
|
|
new ArrayList<ClientProtocolProvider>();
|
|
new ArrayList<ClientProtocolProvider>();
|
|
- for (ClientProtocolProvider provider : frameworkLoader) {
|
|
|
|
- localProviderList.add(provider);
|
|
|
|
|
|
+ try {
|
|
|
|
+ for (ClientProtocolProvider provider : frameworkLoader) {
|
|
|
|
+ localProviderList.add(provider);
|
|
|
|
+ }
|
|
|
|
+ } catch(ServiceConfigurationError e) {
|
|
|
|
+ LOG.info("Failed to instantiate ClientProtocolProvider, please "
|
|
|
|
+ + "check the /META-INF/services/org.apache."
|
|
|
|
+ + "hadoop.mapreduce.protocol.ClientProtocolProvider "
|
|
|
|
+ + "files on the classpath", e);
|
|
}
|
|
}
|
|
providerList = localProviderList;
|
|
providerList = localProviderList;
|
|
}
|
|
}
|