diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ResourceCalculatorProcessTree.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ResourceCalculatorProcessTree.java index 7e5cf551648..ff5ce825ebc 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ResourceCalculatorProcessTree.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ResourceCalculatorProcessTree.java @@ -162,6 +162,15 @@ public float getCpuUsagePercent() { */ public static ResourceCalculatorProcessTree getResourceCalculatorProcessTree( String pid, Class clazz, Configuration conf) { + if (clazz == null) { + // No class given, try a os specific class + if (ProcfsBasedProcessTree.isAvailable()) { + clazz = ProcfsBasedProcessTree.class; + } + if (WindowsBasedProcessTree.isAvailable()) { + clazz = WindowsBasedProcessTree.class; + } + } if (clazz != null) { try { @@ -174,14 +183,6 @@ public static ResourceCalculatorProcessTree getResourceCalculatorProcessTree( } } - // No class given, try a os specific class - if (ProcfsBasedProcessTree.isAvailable()) { - return new ProcfsBasedProcessTree(pid); - } - if (WindowsBasedProcessTree.isAvailable()) { - return new WindowsBasedProcessTree(pid); - } - // Not supported on this system. return null; }