diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ExitUtil.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ExitUtil.java index dbe6663..76bbc7e 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ExitUtil.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ExitUtil.java @@ -337,6 +337,10 @@ public static void haltOnOutOfMemory(OutOfMemoryError oome) { } catch (Throwable err) { //Again we done want to exit because of logging issues. } + if (systemHaltDisabled) { + LOG.error("Halt called", oome); + throw oome; + } Runtime.getRuntime().halt(-1); } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/YarnUncaughtExceptionHandler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/YarnUncaughtExceptionHandler.java index 542fb22..62aabf7 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/YarnUncaughtExceptionHandler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/YarnUncaughtExceptionHandler.java @@ -20,12 +20,9 @@ import java.lang.Thread.UncaughtExceptionHandler; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceStability.Evolving; -import org.apache.hadoop.util.ExitUtil; -import org.apache.hadoop.util.ShutdownHookManager; +import org.apache.hadoop.service.launcher.HadoopUncaughtExceptionHandler; /** * This class is intended to be installed by calling @@ -38,34 +35,8 @@ */ @Public @Evolving -public class YarnUncaughtExceptionHandler implements UncaughtExceptionHandler { - private static final Log LOG = LogFactory.getLog(YarnUncaughtExceptionHandler.class); - - @Override - public void uncaughtException(Thread t, Throwable e) { - if(ShutdownHookManager.get().isShutdownInProgress()) { - LOG.error("Thread " + t + " threw an Throwable, but we are shutting " + - "down, so ignoring this", e); - } else if(e instanceof Error) { - 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 - } - if(e instanceof OutOfMemoryError) { - //After catching an OOM java says it is undefined behavior, so don't - //even try to clean up or we can get stuck on shutdown. - try { - System.err.println("Halting due to Out Of Memory Error..."); - } catch (Throwable err) { - //Again we done want to exit because of logging issues. - } - ExitUtil.halt(-1); - } else { - ExitUtil.terminate(-1); - } - } else { - LOG.error("Thread " + t + " threw an Exception.", e); - } - } +public class YarnUncaughtExceptionHandler + extends HadoopUncaughtExceptionHandler { + + /* Keeping the class here for backwards compatibility. */ }