diff --git a/beeline/src/java/org/apache/hive/beeline/BeeLine.java b/beeline/src/java/org/apache/hive/beeline/BeeLine.java index ecd60f6..5322ca6 100644 --- a/beeline/src/java/org/apache/hive/beeline/BeeLine.java +++ b/beeline/src/java/org/apache/hive/beeline/BeeLine.java @@ -92,6 +92,7 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.io.IOUtils; import org.apache.hive.beeline.cli.CliOptionsProcessor; +import org.apache.hive.common.util.ShutdownHookManager; import org.apache.thrift.transport.TTransportException; import org.apache.hive.jdbc.Utils; @@ -1076,7 +1077,7 @@ public ConsoleReader getConsoleReader(InputStream inputStream) throws IOExceptio } // add shutdown hook to flush the history to history file - Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { + ShutdownHookManager.addShutdownHook(new Runnable() { @Override public void run() { History h = consoleReader.getHistory(); @@ -1088,7 +1089,7 @@ public void run() { } } } - })); + }); consoleReader.addCompleter(new BeeLineCompleter(this)); return consoleReader; diff --git a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java index 874e5aa..5364ca6 100644 --- a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java +++ b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java @@ -79,6 +79,7 @@ import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.ql.session.SessionState.LogHelper; import org.apache.hadoop.io.IOUtils; +import org.apache.hive.common.util.ShutdownHookManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -808,7 +809,7 @@ private void setupCmdHistory() { } // add shutdown hook to flush the history to history file - Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { + ShutdownHookManager.addShutdownHook(new Runnable() { @Override public void run() { History h = reader.getHistory(); @@ -820,7 +821,7 @@ public void run() { } } } - })); + }); } protected void setupConsoleReader() throws IOException { diff --git a/common/src/java/org/apache/hive/common/util/ShutdownHookManager.java b/common/src/java/org/apache/hive/common/util/ShutdownHookManager.java index 5efeda9..5b66887 100644 --- a/common/src/java/org/apache/hive/common/util/ShutdownHookManager.java +++ b/common/src/java/org/apache/hive/common/util/ShutdownHookManager.java @@ -29,6 +29,7 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; +import org.apache.hadoop.fs.FileSystem; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -141,6 +142,13 @@ public int compare(HookEntry o1, HookEntry o2) { return ordered; } + /** + * Adds shutdown hook with default priority (10) + * @param shutdownHook - shutdown hook + */ + public static void addShutdownHook(Runnable shutdownHook) { + addShutdownHook(shutdownHook, FileSystem.SHUTDOWN_HOOK_PRIORITY); + } /** * Adds a shutdownHook with a priority, the higher the priority diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HiveClientCache.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HiveClientCache.java index 51f516e..c1b63d9 100644 --- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HiveClientCache.java +++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HiveClientCache.java @@ -42,6 +42,7 @@ import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.hive.shims.Utils; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hive.common.util.ShutdownHookManager; import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -217,7 +218,7 @@ public void run() { } }; - Runtime.getRuntime().addShutdownHook(cleanupHiveClientShutdownThread); + ShutdownHookManager.addShutdownHook(cleanupHiveClientShutdownThread); } /** diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index 3f85ca6..6a075db 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -97,6 +97,7 @@ import org.apache.hadoop.util.ReflectionUtils; import org.apache.hadoop.util.StringUtils; import org.apache.hive.common.util.HiveStringUtils; +import org.apache.hive.common.util.ShutdownHookManager; import org.apache.thrift.TException; import org.apache.thrift.TProcessor; import org.apache.thrift.protocol.TBinaryProtocol; @@ -6641,7 +6642,7 @@ public static void main(String[] args) throws Throwable { } // Add shutdown hook. - Runtime.getRuntime().addShutdownHook(new Thread() { + ShutdownHookManager.addShutdownHook(new Thread() { @Override public void run() { String shutdownMsg = "Shutting down hive metastore."; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/HadoopJobExecHelper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/HadoopJobExecHelper.java index bb6ed84..5b81941 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/HadoopJobExecHelper.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/HadoopJobExecHelper.java @@ -54,6 +54,7 @@ import org.apache.hadoop.mapred.RunningJob; import org.apache.hadoop.mapred.TaskCompletionEvent; import org.apache.hadoop.mapred.TaskReport; +import org.apache.hive.common.util.ShutdownHookManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Logger; @@ -172,7 +173,7 @@ public HadoopJobExecHelper(JobConf job, LogHelper console, * */ static { - Runtime.getRuntime().addShutdownHook(new Thread() { + ShutdownHookManager.addShutdownHook(new Thread() { @Override public void run() { killRunningJobs(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/spark/session/SparkSessionManagerImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/spark/session/SparkSessionManagerImpl.java index 75e5913..dbbf28b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/spark/session/SparkSessionManagerImpl.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/spark/session/SparkSessionManagerImpl.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.Set; +import org.apache.hive.common.util.ShutdownHookManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.hive.conf.HiveConf; @@ -46,7 +47,7 @@ private static SparkSessionManagerImpl instance; static { - Runtime.getRuntime().addShutdownHook(new Thread() { + ShutdownHookManager.addShutdownHook(new Thread() { @Override public void run() { try { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index d617879..cd5d449 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -48,6 +48,7 @@ import org.apache.hadoop.hive.ql.plan.BaseWork; import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.ql.session.SessionState.LogHelper; +import org.apache.hive.common.util.ShutdownHookManager; import org.apache.tez.common.counters.FileSystemCounter; import org.apache.tez.common.counters.TaskCounter; import org.apache.tez.common.counters.TezCounter; @@ -140,7 +141,7 @@ static { shutdownList = new LinkedList(); - Runtime.getRuntime().addShutdownHook(new Thread() { + ShutdownHookManager.addShutdownHook(new Thread() { @Override public void run() { TezJobMonitor.killRunningJobs(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java b/ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java index e593945..7438570 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/hooks/ATSHook.java @@ -37,6 +37,7 @@ import org.apache.hadoop.yarn.api.records.timeline.TimelineEvent; import org.apache.hadoop.yarn.client.api.TimelineClient; import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hive.common.util.ShutdownHookManager; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -75,7 +76,7 @@ public ATSHook() { timelineClient.init(yarnConf); timelineClient.start(); - Runtime.getRuntime().addShutdownHook(new Thread() { + ShutdownHookManager.addShutdownHook(new Runnable() { @Override public void run() { try { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/CuratorFrameworkSingleton.java b/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/CuratorFrameworkSingleton.java index 6482f3b..36c1048 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/CuratorFrameworkSingleton.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/CuratorFrameworkSingleton.java @@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit; +import org.apache.hive.common.util.ShutdownHookManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.curator.framework.CuratorFramework; @@ -34,7 +35,7 @@ static final Logger LOG = LoggerFactory.getLogger("CuratorFrameworkSingleton"); static { // Add shutdown hook. - Runtime.getRuntime().addShutdownHook(new Thread() { + ShutdownHookManager.addShutdownHook(new Thread() { @Override public void run() { closeAndReleaseInstance(); diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java b/service/src/java/org/apache/hive/service/server/HiveServer2.java index 9822a85..c268210 100644 --- a/service/src/java/org/apache/hive/service/server/HiveServer2.java +++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java @@ -60,6 +60,7 @@ import org.apache.hadoop.security.UserGroupInformation; import org.apache.hive.common.util.HiveStringUtils; import org.apache.hive.common.util.HiveVersionInfo; +import org.apache.hive.common.util.ShutdownHookManager; import org.apache.hive.http.HttpServer; import org.apache.hive.http.LlapServlet; import org.apache.hive.service.CompositeService; @@ -206,7 +207,7 @@ public void run() { throw new ServiceException(ie); } // Add a shutdown hook for catching SIGTERM & SIGINT - Runtime.getRuntime().addShutdownHook(new Thread() { + ShutdownHookManager.addShutdownHook(new Thread() { @Override public void run() { hiveServer2.stop(); diff --git a/testutils/ptest2/src/main/java/org/apache/hive/ptest/api/server/ExecutionController.java b/testutils/ptest2/src/main/java/org/apache/hive/ptest/api/server/ExecutionController.java index 2f96ad0..46e0bfc 100644 --- a/testutils/ptest2/src/main/java/org/apache/hive/ptest/api/server/ExecutionController.java +++ b/testutils/ptest2/src/main/java/org/apache/hive/ptest/api/server/ExecutionController.java @@ -101,7 +101,7 @@ public boolean removeEldestEntry(Map.Entry entry) { mTestExecutor.setName("TestExecutor"); mTestExecutor.setDaemon(true); mTestExecutor.start(); - Runtime.getRuntime().addShutdownHook(new Thread() { + ShutdownHookManager.addShutdownHook(new Thread() { @Override public void run() { LOG.info("Shutdown hook called");