diff --git hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml index 486bebf..74ca61b 100644 --- hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml +++ hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml @@ -309,13 +309,4 @@ - - - - - - - - - diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/ClientRMProxy.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/ClientRMProxy.java index 06bbc35..670b3df 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/ClientRMProxy.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/ClientRMProxy.java @@ -39,16 +39,13 @@ public class ClientRMProxy extends RMProxy { private static final Log LOG = LogFactory.getLog(ClientRMProxy.class); + private static final ClientRMProxy INSTANCE = new ClientRMProxy(); private interface ClientRMProtocols extends ApplicationClientProtocol, ApplicationMasterProtocol, ResourceManagerAdministrationProtocol { // Add nothing } - static { - INSTANCE = new ClientRMProxy(); - } - private ClientRMProxy(){ super(); } @@ -63,9 +60,7 @@ private ClientRMProxy(){ */ public static T createRMProxy(final Configuration configuration, final Class protocol) throws IOException { - // This method exists only to initiate this class' static INSTANCE. TODO: - // FIX if possible - return RMProxy.createRMProxy(configuration, protocol); + return createRMProxy(configuration, protocol, INSTANCE); } private static void setupTokens(InetSocketAddress resourceManagerAddress) @@ -86,7 +81,7 @@ private static void setupTokens(InetSocketAddress resourceManagerAddress) @InterfaceAudience.Private @Override - protected InetSocketAddress getRMAddress(YarnConfiguration conf, + public InetSocketAddress getRMAddress(YarnConfiguration conf, Class protocol) throws IOException { if (protocol == ApplicationClientProtocol.class) { return conf.getSocketAddr(YarnConfiguration.RM_ADDRESS, diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java index 913eb04..3882818 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java @@ -50,7 +50,6 @@ public class RMProxy { private static final Log LOG = LogFactory.getLog(RMProxy.class); - protected static RMProxy INSTANCE; protected RMProxy() {} @@ -65,33 +64,27 @@ protected void checkAllowedProtocols(Class protocol) {} * given protocol. */ @Private - protected InetSocketAddress getRMAddress( + public InetSocketAddress getRMAddress( YarnConfiguration conf, Class protocol) throws IOException { throw new UnsupportedOperationException("This method should be invoked " + "from an instance of ClientRMProxy or ServerRMProxy"); } - /** - * Create a proxy for the specified protocol. For non-HA, - * this is a direct connection to the ResourceManager address. When HA is - * enabled, the proxy handles the failover between the ResourceManagers as - * well. - */ @Private - protected static T createRMProxy(final Configuration configuration, - final Class protocol) throws IOException { + public static T createRMProxy(final Configuration configuration, + final Class protocol, RMProxy instance) throws IOException { YarnConfiguration conf = (configuration instanceof YarnConfiguration) ? (YarnConfiguration) configuration : new YarnConfiguration(configuration); RetryPolicy retryPolicy = createRetryPolicy(conf); if (HAUtil.isHAEnabled(conf)) { RMFailoverProxyProvider provider = - INSTANCE.createRMFailoverProxyProvider(conf, protocol); + instance.createRMFailoverProxyProvider(conf, protocol); return (T) RetryProxy.create(protocol, provider, retryPolicy); } else { - InetSocketAddress rmAddress = INSTANCE.getRMAddress(conf, protocol); + InetSocketAddress rmAddress = instance.getRMAddress(conf, protocol); LOG.info("Connecting to ResourceManager at " + rmAddress); - T proxy = RMProxy.getProxy(conf, protocol, rmAddress); + T proxy = RMProxy.getProxy(conf, protocol, rmAddress); return (T) RetryProxy.create(protocol, proxy, retryPolicy); } } @@ -125,7 +118,7 @@ protected InetSocketAddress getRMAddress( * RetryProxy. */ @Private - static T getProxy(final Configuration conf, + public static T getProxy(final Configuration conf, final Class protocol, final InetSocketAddress rmAddress) throws IOException { return UserGroupInformation.getCurrentUser().doAs( @@ -140,7 +133,8 @@ public T run() { /** * Helper method to create FailoverProxyProvider. */ - private RMFailoverProxyProvider createRMFailoverProxyProvider( + @Private + public RMFailoverProxyProvider createRMFailoverProxyProvider( Configuration conf, Class protocol) { Class> defaultProviderClass; try { @@ -160,25 +154,6 @@ public T run() { } /** - * A RetryPolicy to allow failing over upto the specified maximum time. - */ - private static class FailoverUptoMaximumTimePolicy implements RetryPolicy { - private long maxTime; - - FailoverUptoMaximumTimePolicy(long maxTime) { - this.maxTime = maxTime; - } - - @Override - public RetryAction shouldRetry(Exception e, int retries, int failovers, - boolean isIdempotentOrAtMostOnce) throws Exception { - return System.currentTimeMillis() < maxTime - ? RetryAction.FAILOVER_AND_RETRY - : RetryAction.FAIL; - } - } - - /** * Fetch retry policy from Configuration */ @Private diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/ServerRMProxy.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/ServerRMProxy.java index 15a26e5..c595a1e 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/ServerRMProxy.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/ServerRMProxy.java @@ -24,6 +24,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.yarn.client.RMProxy; import org.apache.hadoop.yarn.conf.YarnConfiguration; @@ -32,10 +33,7 @@ public class ServerRMProxy extends RMProxy { private static final Log LOG = LogFactory.getLog(ServerRMProxy.class); - - static { - INSTANCE = new ServerRMProxy(); - } + private static final ServerRMProxy INSTANCE = new ServerRMProxy(); private ServerRMProxy() { super(); @@ -51,14 +49,12 @@ private ServerRMProxy() { */ public static T createRMProxy(final Configuration configuration, final Class protocol) throws IOException { - // This method exists only to initiate this class' static INSTANCE. TODO: - // FIX if possible - return RMProxy.createRMProxy(configuration, protocol); - } + return createRMProxy(configuration, protocol, INSTANCE); +} - @InterfaceAudience.Private + @Private @Override - protected InetSocketAddress getRMAddress(YarnConfiguration conf, + public InetSocketAddress getRMAddress(YarnConfiguration conf, Class protocol) { if (protocol == ResourceTracker.class) { return conf.getSocketAddr(