浏览代码

YARN-7589. TestPBImplRecords fails with NullPointerException. Contributed by Daniel Templeton

(cherry picked from commit 25df5054216a6a76d09d9c49984f8075ebc6a197)
(cherry picked from commit f222b9d362936621e72c1460d3a9e05e2de4c78b)
Jason Lowe 7 年之前
父节点
当前提交
419a83e133

+ 6 - 3
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java

@@ -100,9 +100,12 @@ public abstract class Resource implements Comparable<Resource> {
   @Stable
   public static Resource newInstance(long memory, int vCores,
       Map<String, Long> others) {
-    ResourceInformation[] info = ResourceUtils.createResourceTypesArray(others);
-
-    return new LightWeightResource(memory, vCores, info);
+    if (others != null) {
+      return new LightWeightResource(memory, vCores,
+          ResourceUtils.createResourceTypesArray(others));
+    } else {
+      return newInstance(memory, vCores);
+    }
   }
 
   @InterfaceAudience.Private

+ 9 - 4
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java

@@ -345,15 +345,13 @@ public class ResourceUtils {
   }
 
   public static ResourceInformation[] getResourceTypesArray() {
-    initializeResourceTypesIfNeeded(null,
-        YarnConfiguration.RESOURCE_TYPES_CONFIGURATION_FILE);
+    initializeResourceTypesIfNeeded();
     return resourceTypesArray;
   }
 
   public static int getNumberOfKnownResourceTypes() {
     if (numKnownResourceTypes < 0) {
-      initializeResourceTypesIfNeeded(null,
-          YarnConfiguration.RESOURCE_TYPES_CONFIGURATION_FILE);
+      initializeResourceTypesIfNeeded();
     }
     return numKnownResourceTypes;
   }
@@ -364,6 +362,11 @@ public class ResourceUtils {
         YarnConfiguration.RESOURCE_TYPES_CONFIGURATION_FILE);
   }
 
+  private static void initializeResourceTypesIfNeeded() {
+    initializeResourceTypesIfNeeded(null,
+        YarnConfiguration.RESOURCE_TYPES_CONFIGURATION_FILE);
+  }
+
   private static void initializeResourceTypesIfNeeded(Configuration conf,
       String resourceFile) {
     if (!initializedResources) {
@@ -674,6 +677,8 @@ public class ResourceUtils {
    */
   public static ResourceInformation[] createResourceTypesArray(Map<String,
       Long> res) {
+    initializeResourceTypesIfNeeded();
+
     ResourceInformation[] info = new ResourceInformation[resourceTypes.size()];
 
     for (Entry<String, Integer> entry : RESOURCE_NAME_TO_INDEX.entrySet()) {