YARN-6995. Improve use of ResourceNotFoundException in resource types code. (Daniel Templeton and Szilard Nemeth via Haibo Chen)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f354f47f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f354f47f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f354f47f Branch: refs/heads/HADOOP-15461 Commit: f354f47f9959d8a79baee690858af3e160494c32 Parents: b3b4d4c Author: Haibo Chen <haiboc...@apache.org> Authored: Thu Jul 19 15:34:12 2018 -0700 Committer: Haibo Chen <haiboc...@apache.org> Committed: Thu Jul 19 15:35:05 2018 -0700 ---------------------------------------------------------------------- .../hadoop/yarn/api/records/Resource.java | 22 ++++----------- .../exceptions/ResourceNotFoundException.java | 29 +++++++++++++++----- .../api/records/impl/pb/ResourcePBImpl.java | 10 +++---- .../hadoop/yarn/util/resource/Resources.java | 6 ++-- 4 files changed, 34 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/f354f47f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java index 3cac1d1..1a7252d 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/Resource.java @@ -257,18 +257,15 @@ public abstract class Resource implements Comparable<Resource> { * * @param resource name of the resource * @return the ResourceInformation object for the resource - * @throws ResourceNotFoundException if the resource can't be found */ @Public @InterfaceStability.Unstable - public ResourceInformation getResourceInformation(String resource) - throws ResourceNotFoundException { + public ResourceInformation getResourceInformation(String resource) { Integer index = ResourceUtils.getResourceTypeIndex().get(resource); if (index != null) { return resources[index]; } - throw new ResourceNotFoundException("Unknown resource '" + resource - + "'. Known resources are " + Arrays.toString(resources)); + throw new ResourceNotFoundException(this, resource); } /** @@ -299,12 +296,10 @@ public abstract class Resource implements Comparable<Resource> { * * @param resource name of the resource * @return the value for the resource - * @throws ResourceNotFoundException if the resource can't be found */ @Public @InterfaceStability.Unstable - public long getResourceValue(String resource) - throws ResourceNotFoundException { + public long getResourceValue(String resource) { return getResourceInformation(resource).getValue(); } @@ -313,13 +308,11 @@ public abstract class Resource implements Comparable<Resource> { * * @param resource the resource for which the ResourceInformation is provided * @param resourceInformation ResourceInformation object - * @throws ResourceNotFoundException if the resource is not found */ @Public @InterfaceStability.Unstable public void setResourceInformation(String resource, - ResourceInformation resourceInformation) - throws ResourceNotFoundException { + ResourceInformation resourceInformation) { if (resource.equals(ResourceInformation.MEMORY_URI)) { this.setMemorySize(resourceInformation.getValue()); return; @@ -348,8 +341,7 @@ public abstract class Resource implements Comparable<Resource> { ResourceInformation resourceInformation) throws ResourceNotFoundException { if (index < 0 || index >= resources.length) { - throw new ResourceNotFoundException("Unknown resource at index '" + index - + "'. Valid resources are " + Arrays.toString(resources)); + throwExceptionWhenArrayOutOfBound(index); } ResourceInformation.copy(resourceInformation, resources[index]); } @@ -360,12 +352,10 @@ public abstract class Resource implements Comparable<Resource> { * * @param resource the resource for which the value is provided. * @param value the value to set - * @throws ResourceNotFoundException if the resource is not found */ @Public @InterfaceStability.Unstable - public void setResourceValue(String resource, long value) - throws ResourceNotFoundException { + public void setResourceValue(String resource, long value) { if (resource.equals(ResourceInformation.MEMORY_URI)) { this.setMemorySize(value); return; http://git-wip-us.apache.org/repos/asf/hadoop/blob/f354f47f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/ResourceNotFoundException.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/ResourceNotFoundException.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/ResourceNotFoundException.java index b5fece7..3fddcff 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/ResourceNotFoundException.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/ResourceNotFoundException.java @@ -18,8 +18,10 @@ package org.apache.hadoop.yarn.exceptions; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; +import org.apache.hadoop.yarn.api.records.Resource; /** * This exception is thrown when details of an unknown resource type @@ -28,18 +30,31 @@ import org.apache.hadoop.classification.InterfaceStability; @InterfaceAudience.Public @InterfaceStability.Unstable public class ResourceNotFoundException extends YarnRuntimeException { - private static final long serialVersionUID = 10081982L; + private static final String MESSAGE = "The resource manager encountered a " + + "problem that should not occur under normal circumstances. " + + "Please report this error to the Hadoop community by opening a " + + "JIRA ticket at http://issues.apache.org/jira and including the " + + "following information:%n* Resource type requested: %s%n* Resource " + + "object: %s%n* The stack trace for this exception: %s%n" + + "After encountering this error, the resource manager is " + + "in an inconsistent state. It is safe for the resource manager " + + "to be restarted as the error encountered should be transitive. " + + "If high availability is enabled, failing over to " + + "a standby resource manager is also safe."; - public ResourceNotFoundException(String message) { - super(message); + public ResourceNotFoundException(Resource resource, String type) { + this(String.format(MESSAGE, type, resource, + ExceptionUtils.getStackTrace(new Exception()))); } - public ResourceNotFoundException(Throwable cause) { - super(cause); + public ResourceNotFoundException(Resource resource, String type, + Throwable cause) { + super(String.format(MESSAGE, type, resource, + ExceptionUtils.getStackTrace(cause)), cause); } - public ResourceNotFoundException(String message, Throwable cause) { - super(message, cause); + public ResourceNotFoundException(String message) { + super(message); } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/f354f47f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java index 6ebed6e..15d2470 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ResourcePBImpl.java @@ -193,8 +193,7 @@ public class ResourcePBImpl extends Resource { } @Override - public void setResourceValue(String resource, long value) - throws ResourceNotFoundException { + public void setResourceValue(String resource, long value) { maybeInitBuilder(); if (resource == null) { throw new IllegalArgumentException("resource type object cannot be null"); @@ -203,14 +202,13 @@ public class ResourcePBImpl extends Resource { } @Override - public ResourceInformation getResourceInformation(String resource) - throws ResourceNotFoundException { + public ResourceInformation getResourceInformation(String resource) { + initResources(); return super.getResourceInformation(resource); } @Override - public long getResourceValue(String resource) - throws ResourceNotFoundException { + public long getResourceValue(String resource) { return super.getResourceValue(resource); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/f354f47f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/resource/Resources.java ---------------------------------------------------------------------- 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 ace8b5d..db0f980 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 @@ -128,14 +128,12 @@ public class Resources { @Override public void setResourceInformation(String resource, - ResourceInformation resourceInformation) - throws ResourceNotFoundException { + ResourceInformation resourceInformation) { throw new RuntimeException(name + " cannot be modified!"); } @Override - public void setResourceValue(String resource, long value) - throws ResourceNotFoundException { + public void setResourceValue(String resource, long value) { throw new RuntimeException(name + " cannot be modified!"); } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org