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/fair/policies/FairSharePolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java index 0ef90a1..d2b5ad7 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/policies/FairSharePolicy.java @@ -169,8 +169,13 @@ private int compareFairShareUsage(Schedulable s1, Schedulable s2, double useToWeightRatio1; double useToWeightRatio2; if (weight1 > 0.0 && weight2 > 0.0) { - useToWeightRatio1 = resourceUsage1.getMemorySize() / weight1; - useToWeightRatio2 = resourceUsage2.getMemorySize() / weight2; + if (resourceUsage1.getMemorySize() == 0 && resourceUsage2.getMemorySize() == 0){ + useToWeightRatio1 = ONE.getMemorySize() / weight1; + useToWeightRatio2 = ONE.getMemorySize() / weight2; + } else { + useToWeightRatio1 = resourceUsage1.getMemorySize() / weight1; + useToWeightRatio2 = resourceUsage2.getMemorySize() / weight2; + } } else { // Either weight1 or weight2 equals to 0 if (weight1 == weight2) { // If they have same weight, just compare usage