From e66c8bc2c5c5b5298849ab0ca79f240173b6da50 Mon Sep 17 00:00:00 2001 From: Adam Antal Date: Thu, 5 Dec 2019 12:46:14 +0100 Subject: [PATCH] YARN-10006. IOException used in place of YARNException in CapaitySheduler --- .../scheduler/capacity/CapacityScheduler.java | 19 +++++++++++-------- .../capacity/TestCapacityScheduler.java | 6 ++++-- .../scheduler/capacity/TestQueueParsing.java | 10 +++++----- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java index 7611bb663ea..fcc05602871 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java @@ -323,7 +323,7 @@ public void setRMContext(RMContext rmContext) { @VisibleForTesting void initScheduler(Configuration configuration) throws - IOException { + IOException, YarnException { writeLock.lock(); try { String confProviderStr = configuration.get( @@ -768,16 +768,19 @@ public void updatePlacementRules() throws IOException { @Lock(CapacityScheduler.class) private void initializeQueues(CapacitySchedulerConfiguration conf) - throws IOException { - - this.queueManager.initializeQueues(conf); + throws YarnException { + try { + this.queueManager.initializeQueues(conf); - updatePlacementRules(); + updatePlacementRules(); - this.workflowPriorityMappingsMgr.initialize(this); + this.workflowPriorityMappingsMgr.initialize(this); - // Notify Preemption Manager - preemptionManager.refreshQueues(null, this.getRootQueue()); + // Notify Preemption Manager + preemptionManager.refreshQueues(null, this.getRootQueue()); + } catch (Exception e) { + throw new YarnException("Failed to initialize queues", e); + } } @Lock(CapacityScheduler.class) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java index 3725dc4ebc8..84dffa3e6ee 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java @@ -53,6 +53,7 @@ import java.util.concurrent.CyclicBarrier; import com.google.common.collect.Sets; +import org.apache.hadoop.service.ServiceStateException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.conf.Configuration; @@ -5409,9 +5410,10 @@ public void testcheckAndGetApplicationLifetime() throws Exception { try { setUpCSQueue(maxLifetime, defaultLifetime); Assert.fail("Expected to fails since maxLifetime < defaultLifetime."); - } catch (YarnRuntimeException ye) { + } catch (ServiceStateException sse) { + Throwable rootCause = sse.getCause().getCause(); Assert.assertTrue( - ye.getMessage().contains("can't exceed maximum lifetime")); + rootCause.getMessage().contains("can't exceed maximum lifetime")); } maxLifetime = -1; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueParsing.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueParsing.java index e496d4622a6..2a8af9281ef 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueParsing.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueParsing.java @@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.service.ServiceOperations; +import org.apache.hadoop.service.ServiceStateException; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager; import org.apache.hadoop.yarn.server.resourcemanager.MockRM; @@ -35,7 +36,6 @@ import org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.policy.PriorityUtilizationQueueOrderingPolicy; -import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.policy.QueueOrderingPolicy; import org.apache.hadoop.yarn.server.resourcemanager.security.ClientToAMTokenSecretManagerInRM; import org.apache.hadoop.yarn.server.resourcemanager.security.NMTokenSecretManagerInRM; import org.apache.hadoop.yarn.server.resourcemanager.security.RMContainerTokenSecretManager; @@ -941,7 +941,7 @@ public void testNestedQueueParsingShouldTrimSpaces() throws Exception { * Test init a queue configuration, children's capacity for a given label * doesn't equals to 100%. This expect IllegalArgumentException thrown. */ - @Test(expected = IllegalArgumentException.class) + @Test(expected = ServiceStateException.class) public void testQueueParsingFailWhenSumOfChildrenNonLabeledCapacityNot100Percent() throws IOException { nodeLabelManager.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet @@ -971,7 +971,7 @@ public void testQueueParsingFailWhenSumOfChildrenNonLabeledCapacityNot100Percent * Test init a queue configuration, children's capacity for a given label * doesn't equals to 100%. This expect IllegalArgumentException thrown. */ - @Test(expected = IllegalArgumentException.class) + @Test(expected = ServiceStateException.class) public void testQueueParsingFailWhenSumOfChildrenLabeledCapacityNot100Percent() throws IOException { nodeLabelManager.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet @@ -1002,7 +1002,7 @@ public void testQueueParsingFailWhenSumOfChildrenLabeledCapacityNot100Percent() * Test init a queue configuration, children's capacity for a given label * doesn't equals to 100%. This expect IllegalArgumentException thrown. */ - @Test(expected = IllegalArgumentException.class) + @Test(expected = ServiceStateException.class) public void testQueueParsingWithSumOfChildLabelCapacityNot100PercentWithWildCard() throws IOException { nodeLabelManager.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet @@ -1066,7 +1066,7 @@ public void testQueueParsingWithMoveQueue() capacityScheduler.reinitialize(csConf, rmContext); } - @Test(timeout = 60000, expected = java.lang.IllegalArgumentException.class) + @Test(timeout = 60000, expected = ServiceStateException.class) public void testRMStartWrongNodeCapacity() throws Exception { YarnConfiguration config = new YarnConfiguration(); nodeLabelManager = new NullRMNodeLabelsManager(); -- 2.21.0