From 1b36126e3f07f7d18bd903429e5f30ee78b4c12b Mon Sep 17 00:00:00 2001 From: Prabhu Joseph Date: Thu, 29 Aug 2019 15:31:16 +0530 Subject: [PATCH] YARN-9791. Fix Queue Mutation Api to remove a queue config. --- .../conf/MutableCSConfigurationProvider.java | 6 +++-- .../conf/TestMutableCSConfigurationProvider.java | 31 ++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 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/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..54000ad 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 @@ -280,12 +280,14 @@ private void updateQueue(QueueConfigInfo updateInfo, String keyPrefix = CapacitySchedulerConfiguration.PREFIX + queuePath + CapacitySchedulerConfiguration.DOT; for (Map.Entry kv : updateInfo.getParams().entrySet()) { - if (kv.getValue() == null) { + String keyValue = kv.getValue(); + if (kv.getValue() == null || kv.getValue().isEmpty()) { + keyValue = null; proposedConf.unset(keyPrefix + kv.getKey()); } else { proposedConf.set(keyPrefix + kv.getKey(), kv.getValue()); } - confUpdate.put(keyPrefix + kv.getKey(), kv.getValue()); + confUpdate.put(keyPrefix + kv.getKey(), keyValue); } } } 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/conf/TestMutableCSConfigurationProvider.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/conf/TestMutableCSConfigurationProvider.java index 81bc7a7..bb3cc60 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/conf/TestMutableCSConfigurationProvider.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/conf/TestMutableCSConfigurationProvider.java @@ -107,6 +107,37 @@ public void testInMemoryBackedProvider() throws Exception { } @Test + public void testRemoveQueueConfig() throws Exception { + Configuration conf = new Configuration(); + conf.set(YarnConfiguration.SCHEDULER_CONFIGURATION_STORE_CLASS, + YarnConfiguration.MEMORY_CONFIGURATION_STORE); + confProvider.init(conf); + + SchedConfUpdateInfo updateInfo = new SchedConfUpdateInfo(); + Map updateMap = new HashMap<>(); + updateMap.put("testkey", "testval"); + QueueConfigInfo queueConfigInfo = new + QueueConfigInfo("root.a", updateMap); + updateInfo.getUpdateQueueInfo().add(queueConfigInfo); + + confProvider.logAndApplyMutation(TEST_USER, updateInfo); + confProvider.confirmPendingMutation(true); + assertEquals("testval", confProvider.loadConfiguration(conf) + .get("yarn.scheduler.capacity.root.a.testkey")); + + updateInfo = new SchedConfUpdateInfo(); + updateMap.put("testkey", ""); + queueConfigInfo = new QueueConfigInfo("root.a", updateMap); + updateInfo.getUpdateQueueInfo().add(queueConfigInfo); + + confProvider.logAndApplyMutation(TEST_USER, updateInfo); + confProvider.confirmPendingMutation(true); + assertNull("Failed to remove config", + confProvider.loadConfiguration(conf). + get("yarn.scheduler.capacity.root.a.testkey")); + } + + @Test public void testHDFSBackedProvider() throws Exception { File testSchedulerConfigurationDir = new File( TestMutableCSConfigurationProvider.class.getResource("").getPath() -- 2.7.4 (Apple Git-66)