diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/TestHedgingRequestRMFailoverProxyProvider.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/TestHedgingRequestRMFailoverProxyProvider.java index 6fd6591..53ab08e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/TestHedgingRequestRMFailoverProxyProvider.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/TestHedgingRequestRMFailoverProxyProvider.java @@ -32,52 +32,54 @@ @Test public void testHedgingRequestProxyProvider() throws Exception { - final MiniYARNCluster cluster = - new MiniYARNCluster("testHedgingRequestProxyProvider", 5, 0, 1, 1); - Configuration conf = new YarnConfiguration(); + try (MiniYARNCluster cluster = + new MiniYARNCluster("testHedgingRequestProxyProvider", 5, 0, 1, 1)) { + Configuration conf = new YarnConfiguration(); + + conf.setBoolean(YarnConfiguration.RM_HA_ENABLED, true); + conf.setBoolean(YarnConfiguration.AUTO_FAILOVER_ENABLED, false); + conf.set(YarnConfiguration.RM_CLUSTER_ID, "cluster1"); + conf.set(YarnConfiguration.RM_HA_IDS, "rm1,rm2,rm3,rm4,rm5"); + + conf.set(YarnConfiguration.CLIENT_FAILOVER_PROXY_PROVIDER, + RequestHedgingRMFailoverProxyProvider.class.getName()); + conf.setLong(YarnConfiguration.RESOURCEMANAGER_CONNECT_RETRY_INTERVAL_MS, + 2000); - conf.setBoolean(YarnConfiguration.RM_HA_ENABLED, true); - conf.setBoolean(YarnConfiguration.AUTO_FAILOVER_ENABLED, false); - conf.set(YarnConfiguration.RM_CLUSTER_ID, "cluster1"); - conf.set(YarnConfiguration.RM_HA_IDS, "rm1,rm2,rm3,rm4,rm5"); + - conf.set(YarnConfiguration.CLIENT_FAILOVER_PROXY_PROVIDER, - RequestHedgingRMFailoverProxyProvider.class.getName()); - conf.setLong(YarnConfiguration.RESOURCEMANAGER_CONNECT_RETRY_INTERVAL_MS, - 2000); + HATestUtil.setRpcAddressForRM("rm1", 10000, conf); + HATestUtil.setRpcAddressForRM("rm2", 20000, conf); + HATestUtil.setRpcAddressForRM("rm3", 30000, conf); + HATestUtil.setRpcAddressForRM("rm4", 40000, conf); + HATestUtil.setRpcAddressForRM("rm5", 50000, conf); + conf.setBoolean(YarnConfiguration.YARN_MINICLUSTER_FIXED_PORTS, true); - HATestUtil.setRpcAddressForRM("rm1", 10000, conf); - HATestUtil.setRpcAddressForRM("rm2", 20000, conf); - HATestUtil.setRpcAddressForRM("rm3", 30000, conf); - HATestUtil.setRpcAddressForRM("rm4", 40000, conf); - HATestUtil.setRpcAddressForRM("rm5", 50000, conf); - conf.setBoolean(YarnConfiguration.YARN_MINICLUSTER_FIXED_PORTS, true); + cluster.init(conf); + cluster.start(); - cluster.init(conf); - cluster.start(); + final YarnClient client = YarnClient.createYarnClient(); + client.init(conf); + client.start(); - final YarnClient client = YarnClient.createYarnClient(); - client.init(conf); - client.start(); + // Transition rm5 to active; + long start = System.currentTimeMillis(); + makeRMActive(cluster, 4); + // client will retry until the rm becomes active. + client.getAllQueues(); + long end = System.currentTimeMillis(); + System.out.println("Client call succeeded at " + end); + // should return the response fast + Assert.assertTrue(end - start <= 10000); - // Transition rm5 to active; - long start = System.currentTimeMillis(); - makeRMActive(cluster, 4); - // client will retry until the rm becomes active. - client.getAllQueues(); - long end = System.currentTimeMillis(); - System.out.println("Client call succeeded at " + end); - // should return the response fast - Assert.assertTrue(end - start <= 10000); + // transition rm5 to standby + cluster.getResourceManager(4).getRMContext().getRMAdminService() + .transitionToStandby(new HAServiceProtocol.StateChangeRequestInfo( + HAServiceProtocol.RequestSource.REQUEST_BY_USER)); - // transition rm5 to standby - cluster.getResourceManager(4).getRMContext().getRMAdminService() - .transitionToStandby(new HAServiceProtocol.StateChangeRequestInfo( - HAServiceProtocol.RequestSource.REQUEST_BY_USER)); - - makeRMActive(cluster, 2); - client.getAllQueues(); - cluster.stop(); + makeRMActive(cluster, 2); + client.getAllQueues(); + } } private void makeRMActive(final MiniYARNCluster cluster, final int index) {