From 23c1c427b11d348abc36c0cc79149f7526aa4480 Mon Sep 17 00:00:00 2001 From: Prabhu Joseph Date: Sat, 24 Aug 2019 19:33:15 +0530 Subject: [PATCH] YARN-9780. Allow Stop and Remove queue in single SchedulerConf Rest Api Call. --- .../scheduler/capacity/CapacitySchedulerQueueManager.java | 11 ++++++++--- .../capacity/conf/MutableCSConfigurationProvider.java | 4 +++- 2 files changed, 11 insertions(+), 4 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/CapacitySchedulerQueueManager.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/CapacitySchedulerQueueManager.java index cdde25d..0b06ea9 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/CapacitySchedulerQueueManager.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/CapacitySchedulerQueueManager.java @@ -177,7 +177,7 @@ public void reinitializeQueues(CapacitySchedulerConfiguration newConf) csContext.getRMContext().getHAServiceState() != HAServiceProtocol.HAServiceState.STANDBY) { // Ensure queue hierarchy in the new XML file is proper. - validateQueueHierarchy(queues, newQueues); + validateQueueHierarchy(queues, newQueues, newConf); } // Add new queues and delete OldQeueus only after validation. @@ -309,7 +309,8 @@ static CSQueue parseQueue( * @param newQueues new queues */ private void validateQueueHierarchy(Map queues, - Map newQueues) throws IOException { + Map newQueues, CapacitySchedulerConfiguration newConf) + throws IOException { // check that all static queues are included in the newQueues list for (Map.Entry e : queues.entrySet()) { if (!(AbstractAutoCreatedLeafQueue.class.isAssignableFrom(e.getValue() @@ -319,7 +320,11 @@ private void validateQueueHierarchy(Map queues, CSQueue newQueue = newQueues.get(queueName); if (null == newQueue) { // old queue doesn't exist in the new XML - if (oldQueue.getState() == QueueState.STOPPED) { + String configPrefix = newConf.getQueuePrefix(oldQueue.getQueuePath());; + String newQueueState = newConf.get(configPrefix+"state"); + if (oldQueue.getState() == QueueState.STOPPED || + (newQueueState !=null && + newQueueState.equals(QueueState.STOPPED.name()))) { LOG.info("Deleting Queue " + queueName + ", as it is not" + " present in the modified capacity configuration xml"); } else{ 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/conf/MutableCSConfigurationProvider.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/conf/MutableCSConfigurationProvider.java index 6a13d2d..229eb88 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/conf/MutableCSConfigurationProvider.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/conf/MutableCSConfigurationProvider.java @@ -226,7 +226,9 @@ private void removeQueue( ".*" + queueToRemove.replaceAll("\\.", "\\.") + "\\..*") .entrySet()) { proposedConf.unset(confRemove.getKey()); - confUpdate.put(confRemove.getKey(), null); + if (!confRemove.getKey().endsWith(queueToRemove+".state")) { + confUpdate.put(confRemove.getKey(), null); + } } } } -- 2.7.4 (Apple Git-66)