You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ab...@apache.org on 2019/09/01 17:11:08 UTC

[hadoop] branch trunk updated: YARN-9791. Queue Mutation API does not allow to remove a config. Contributed by Prabhu Joseph.

This is an automated email from the ASF dual-hosted git repository.

abmodi pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 751b5a1  YARN-9791. Queue Mutation API does not allow to remove a config. Contributed by Prabhu Joseph.
751b5a1 is described below

commit 751b5a1ac871734c46cb934d100a5367f1dbf791
Author: Abhishek Modi <ab...@apache.org>
AuthorDate: Sun Sep 1 22:40:40 2019 +0530

    YARN-9791. Queue Mutation API does not allow to remove a config. Contributed by Prabhu Joseph.
---
 .../conf/MutableCSConfigurationProvider.java       |  8 +++--
 .../conf/TestMutableCSConfigurationProvider.java   | 37 ++++++++++++++++++++++
 2 files changed, 42 insertions(+), 3 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..0677bd8 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 @@ public class MutableCSConfigurationProvider implements CSConfigurationProvider,
       String keyPrefix = CapacitySchedulerConfiguration.PREFIX
           + queuePath + CapacitySchedulerConfiguration.DOT;
       for (Map.Entry<String, String> kv : updateInfo.getParams().entrySet()) {
-        if (kv.getValue() == null) {
+        String keyValue = kv.getValue();
+        if (keyValue == null || keyValue.isEmpty()) {
+          keyValue = null;
           proposedConf.unset(keyPrefix + kv.getKey());
         } else {
-          proposedConf.set(keyPrefix + kv.getKey(), kv.getValue());
+          proposedConf.set(keyPrefix + kv.getKey(), keyValue);
         }
-        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..64fc80c 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,43 @@ public class TestMutableCSConfigurationProvider {
   }
 
   @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<String, String> updateMap = new HashMap<>();
+    updateMap.put("testkey1", "testval1");
+    updateMap.put("testkey2", "testval2");
+    QueueConfigInfo queueConfigInfo = new
+        QueueConfigInfo("root.a", updateMap);
+    updateInfo.getUpdateQueueInfo().add(queueConfigInfo);
+
+    confProvider.logAndApplyMutation(TEST_USER, updateInfo);
+    confProvider.confirmPendingMutation(true);
+    assertEquals("testval1", confProvider.loadConfiguration(conf)
+        .get("yarn.scheduler.capacity.root.a.testkey1"));
+    assertEquals("testval2", confProvider.loadConfiguration(conf)
+        .get("yarn.scheduler.capacity.root.a.testkey2"));
+
+    // Unset testkey1.
+    updateInfo = new SchedConfUpdateInfo();
+    updateMap.put("testkey1", "");
+    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.testkey1"));
+    assertEquals("testval2", confProvider.loadConfiguration(conf)
+        .get("yarn.scheduler.capacity.root.a.testkey2"));
+  }
+
+  @Test
   public void testHDFSBackedProvider() throws Exception {
     File testSchedulerConfigurationDir = new File(
         TestMutableCSConfigurationProvider.class.getResource("").getPath()


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org