[
https://issues.apache.org/jira/browse/HDFS-8842?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Colin Patrick McCabe updated HDFS-8842:
---------------------------------------
Target Version/s: 2.7.1, 2.5.2, 2.5.1, 2.7.0, 2.6.0 (was: 2.6.0, 2.7.0,
2.5.1, 2.5.2, 2.7.1)
Priority: Trivial (was: Critical)
> Catch throwable
> ----------------
>
> Key: HDFS-8842
> URL: https://issues.apache.org/jira/browse/HDFS-8842
> Project: Hadoop HDFS
> Issue Type: Bug
> Reporter: songwanging
> Priority: Trivial
>
> We came across a few instances where the code catches Throwable, but fails to
> rethrow anything.
> Throwable is the parent type of Exception and Error, so catching Throwable
> means catching both Exceptions as well as Errors. An Exception is something
> you could recover (like IOException), an Error is something more serious and
> usually you could'nt recover easily (like ClassNotFoundError) so it doesn't
> make much sense to catch an Error.
> We should convert Throwable to Exception.
> For example:
> In method tryGetPid(Process p) of class:
> hadoop-2.7.1-src\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ha\ShellCommandFencer.java
> code:
> private static String tryGetPid(Process p) {
> try {
> ...
> } catch (Throwable t) {
> LOG.trace("Unable to determine pid for " + p, t);
> return null;
> }
> }
> In method uncaughtException(Thread t, Throwable e) of class:
> hadoop-2.7.1-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-common\src\main\java\org\apache\hadoop\yarn\YarnUncaughtExceptionHandler.java
> code:
> public void uncaughtException(Thread t, Throwable e) {
> ...
> try {
> LOG.fatal("Thread " + t + " threw an Error. Shutting down now...",
> e);
> } catch (Throwable err) {
> //We don't want to not exit because of an issue with logging
> }
> ...
> try {
> System.err.println("Halting due to Out Of Memory Error...");
> } catch (Throwable err) {
> //Again we done want to exit because of logging issues.
> }
> ...
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)