diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 74d1dffcbf1..323bacfa6f2 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -733,6 +733,9 @@ Release 2.6.0 - UNRELEASED YARN-2734. Skipped sub-folders in the local log dir when aggregating logs. (Xuan Gong via zjshen) + YARN-2726. CapacityScheduler should explicitly log when an accessible + label has no capacity. (Wangda Tan via xgong) + Release 2.5.1 - 2014-09-05 INCOMPATIBLE CHANGES 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/CapacitySchedulerConfiguration.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/CapacitySchedulerConfiguration.java index 5beed371353..b36172c895f 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/CapacitySchedulerConfiguration.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/CapacitySchedulerConfiguration.java @@ -466,12 +466,19 @@ public class CapacitySchedulerConfiguration extends Configuration { nodeLabelCapacities.put(label, 1.0f); continue; } - float capacity = - getFloat(getNodeLabelPrefix(queue, label) + CAPACITY, UNDEFINED); + String capacityPropertyName = getNodeLabelPrefix(queue, label) + CAPACITY; + float capacity = getFloat(capacityPropertyName, UNDEFINED); + if (capacity == UNDEFINED) { + throw new IllegalArgumentException("Configuration issue: " + + " node-label=" + label + " is accessible from queue=" + queue + + " but has no capacity set, you should set " + + capacityPropertyName + " in range of [0, 100]."); + } if (capacity < MINIMUM_CAPACITY_VALUE || capacity > MAXIMUM_CAPACITY_VALUE) { - throw new IllegalArgumentException("Illegal " + "capacity of " - + capacity + " for label=" + label + " in queue=" + queue); + throw new IllegalArgumentException("Illegal capacity of " + capacity + + " for node-label=" + label + " in queue=" + queue + + ", valid capacity should in range of [0, 100]."); } if (LOG.isDebugEnabled()) { LOG.debug("CSConf - getCapacityOfLabel: prefix="