HADOOP-12423. Handle failure of registering shutdownhook by ShutdownHookManager in static block (Contributed by Abhishek Agarwal)
(cherry picked from commit 446987e20aacd870e1bc3f950b2bd4bbda1f9571) (cherry picked from commit c13929b385cf2eddcf580b242ffef1f88b7c5d40) Conflicts: hadoop-common-project/hadoop-common/CHANGES.txt Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/a02fab85 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/a02fab85 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/a02fab85 Branch: refs/heads/branch-2.8 Commit: a02fab85ee85a4cb294cdbafd6f1468220429ca2 Parents: 4449677 Author: Vinayakumar B <vinayakum...@apache.org> Authored: Thu Jan 21 20:08:24 2016 +0530 Committer: Vinayakumar B <vinayakum...@apache.org> Committed: Thu Jan 21 20:14:31 2016 +0530 ---------------------------------------------------------------------- hadoop-common-project/hadoop-common/CHANGES.txt | 3 ++ .../apache/hadoop/util/ShutdownHookManager.java | 31 ++++++++++++-------- 2 files changed, 21 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/a02fab85/hadoop-common-project/hadoop-common/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index edb0063..ec9e368 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -946,6 +946,9 @@ Release 2.8.0 - UNRELEASED HADOOP-12712. Fix some cmake plugin and native build warnings (cmccabe) + HADOOP-12423. Handle failure of registering shutdownhook by + ShutdownHookManager in static block (Abhishek Agarwal via vinayakumarb) + Release 2.7.3 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/a02fab85/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ShutdownHookManager.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ShutdownHookManager.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ShutdownHookManager.java index 85533db..843454b 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ShutdownHookManager.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ShutdownHookManager.java @@ -44,22 +44,27 @@ public class ShutdownHookManager { private static final Log LOG = LogFactory.getLog(ShutdownHookManager.class); static { - Runtime.getRuntime().addShutdownHook( - new Thread() { - @Override - public void run() { - MGR.shutdownInProgress.set(true); - for (Runnable hook: MGR.getShutdownHooksInOrder()) { - try { - hook.run(); - } catch (Throwable ex) { - LOG.warn("ShutdownHook '" + hook.getClass().getSimpleName() + - "' failed, " + ex.toString(), ex); + try { + Runtime.getRuntime().addShutdownHook( + new Thread() { + @Override + public void run() { + MGR.shutdownInProgress.set(true); + for (Runnable hook: MGR.getShutdownHooksInOrder()) { + try { + hook.run(); + } catch (Throwable ex) { + LOG.warn("ShutdownHook '" + hook.getClass().getSimpleName() + + "' failed, " + ex.toString(), ex); + } } } } - } - ); + ); + } catch (IllegalStateException ex) { + // JVM is being shut down. Ignore + LOG.warn("Failed to add the ShutdownHook", ex); + } } /**