diff --git ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java index 513a2fa..d6e972c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java +++ ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java @@ -30,6 +30,7 @@ import org.apache.hadoop.hive.ql.exec.ExplainTask; import org.apache.hadoop.hive.ql.exec.Task; import org.apache.hadoop.hive.ql.exec.Utilities; +import org.apache.hadoop.util.ShutdownHookManager; import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.yarn.api.records.timeline.TimelineEntity; import org.apache.hadoop.yarn.api.records.timeline.TimelineEvent; @@ -67,17 +68,19 @@ public ATSHook() { timelineClient.init(yarnConf); timelineClient.start(); - Runtime.getRuntime().addShutdownHook(new Thread() { + ShutdownHookManager.get().addShutdownHook(new Thread() { @Override public void run() { try { - executor.shutdown(); - executor.awaitTermination(WAIT_TIME, TimeUnit.SECONDS); - executor = null; + if (!ShutdownHookManager.get().isShutdownInProgress()) { + executor.shutdown(); + executor.awaitTermination(WAIT_TIME, TimeUnit.SECONDS); + executor = null; + } } catch(InterruptedException ie) { /* ignore */ } timelineClient.stop(); } - }); + }, 1); } }