diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java index 48c2c364ae9..fe86e8be370 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java @@ -48,8 +48,12 @@ @Private @Unstable public static Resource createResourceWithSameValue(long value) { + int vcores = Integer.MAX_VALUE; + if (value < vcores) { + vcores = (int) value; + } LightWeightResource res = new LightWeightResource(value, - Long.valueOf(value).intValue()); + vcores); int numberOfResources = ResourceUtils.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 07b24eb2618..7a430224881 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 @@ -265,6 +265,25 @@ public void testMultiplyAndAddTo() throws Exception { } @Test + public void testCreateResourceWithMaxLongValue() throws Exception{ + unsetExtraResourceType(); + setupExtraResourceType(); + + Resource res = Resources.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 = Resources.createResourceWithSameValue(Long.MAX_VALUE); + assertEquals(Long.MAX_VALUE, res.getMemorySize()); + assertEquals(Integer.MAX_VALUE, res.getVirtualCores()); + } + + @Test public void testCreateResourceWithSameLongValue() throws Exception { unsetExtraResourceType(); setupExtraResourceType();