diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java index 13a872cb414..7ebc70e4d0b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/util/resource/ResourceUtils.java @@ -785,8 +785,11 @@ public static void areMandatoryResourcesAvailable(Resource res) { @InterfaceAudience.Private @InterfaceStability.Unstable public static Resource createResourceWithSameValue(long value) { - LightWeightResource res = new LightWeightResource(value, - Long.valueOf(value).intValue()); + int vcores = Integer.MAX_VALUE; + if(value < vcores){ + vcores = (int) value; + } + LightWeightResource res = new LightWeightResource(value, vcores); int numberOfResources = getNumberOfKnownResourceTypes(); for (int i = 2; i < numberOfResources; i++) { res.setResourceValue(i, value); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResources.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResources.java index 307e0d8e07d..80a5b962096 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResources.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/resource/TestResources.java @@ -282,6 +282,25 @@ public void testMultiplyAndAddTo() throws Exception { 1.5)); } + @Test + public void testCreateResourceWithMaxLongValue() throws Exception{ + unsetExtraResourceType(); + setupExtraResourceType(); + + Resource res = ResourceUtils.createResourceWithSameValue(Long.MAX_VALUE); + assertEquals(Long.MAX_VALUE, res.getMemorySize()); + assertEquals(Integer.MAX_VALUE, res.getVirtualCores()); + assertEquals(Long.MAX_VALUE, + res.getResourceInformation(EXTRA_RESOURCE_TYPE).getValue()); + } + + @Test + public void testCreateSimpleResourceWithMaxLongValue() { + Resource res = ResourceUtils.createResourceWithSameValue(Long.MAX_VALUE); + assertEquals(Long.MAX_VALUE, res.getMemorySize()); + assertEquals(Integer.MAX_VALUE, res.getVirtualCores()); + } + @Test public void testCreateResourceWithSameLongValue() throws Exception { unsetExtraResourceType();