diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java index 5f1455ff023..2b367bf9ed8 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java @@ -100,9 +100,12 @@ public static Resource newInstance(long memory, int vCores) { @Stable public static Resource newInstance(long memory, int vCores, Map 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 diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java index 04c2412daff..e4effdbdf1c 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java @@ -345,15 +345,13 @@ private static void updateResourceTypeIndex() { } 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 static int getNumberOfKnownResourceTypes() { 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 static void reinitializeResources( */ public static ResourceInformation[] createResourceTypesArray(Map res) { + initializeResourceTypesIfNeeded(); + ResourceInformation[] info = new ResourceInformation[resourceTypes.size()]; for (Entry entry : RESOURCE_NAME_TO_INDEX.entrySet()) {