From 5fea0c623ecc7570c0f9f7e9013a7073e19dfe5d Mon Sep 17 00:00:00 2001 From: Prabhu Joseph Date: Fri, 14 Feb 2020 22:05:21 +0530 Subject: [PATCH] YARN-10139. Fix ValidateAndGetSchedulerConfiguration API fails when cluster max allocation > default 8GB. --- .../yarn/server/resourcemanager/webapp/RMWebServices.java | 13 +++++++++++-- 1 file changed, 11 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/webapp/RMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java index c6858f9..dfdaba9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java @@ -31,6 +31,7 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -2639,14 +2640,22 @@ public synchronized Response validateAndGetSchedulerConfiguration( ((MutableConfScheduler) scheduler).getMutableConfProvider(); Configuration schedulerConf = mutableConfigurationProvider .getConfiguration(); - Configuration newConfig = mutableConfigurationProvider + Configuration newSchedulerConf = mutableConfigurationProvider .applyChanges(schedulerConf, mutationInfo); Configuration yarnConf = ((CapacityScheduler) scheduler).getConf(); + + Configuration newConfig = new Configuration(yarnConf); + Iterator> iter = newSchedulerConf.iterator(); + Entry e = null; + while (iter.hasNext()) { + e = iter.next(); + newConfig.set(e.getKey(), e.getValue()); + } CapacitySchedulerConfigValidator.validateCSConfiguration(yarnConf, newConfig, rm.getRMContext()); return Response.status(Status.OK) - .entity(new ConfInfo(newConfig)) + .entity(new ConfInfo(newSchedulerConf)) .build(); } catch (Exception e) { String errorMsg = "CapacityScheduler configuration validation failed:" -- 2.7.4 (Apple Git-66)