diff --git ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java index 5a95649..3cec93d 100644 --- ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java +++ ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java @@ -922,21 +922,24 @@ private void init() throws LockException { } private synchronized void initHeartbeatExecutorService() { - if (heartbeatExecutorService != null && !heartbeatExecutorService.isShutdown() - && !heartbeatExecutorService.isTerminated()) { - return; + synchronized (DbTxnManager.class) { + if (heartbeatExecutorService != null && !heartbeatExecutorService.isShutdown() + && !heartbeatExecutorService.isTerminated()) { + return; + } + heartbeatExecutorService = + Executors.newScheduledThreadPool( + conf.getIntVar(HiveConf.ConfVars.HIVE_TXN_HEARTBEAT_THREADPOOL_SIZE), + new ThreadFactory() { + private final AtomicInteger threadCounter = new AtomicInteger(); + + @Override + public Thread newThread(Runnable r) { + return new HeartbeaterThread(r, "Heartbeater-" + threadCounter.getAndIncrement()); + } + }); + ((ScheduledThreadPoolExecutor) heartbeatExecutorService).setRemoveOnCancelPolicy(true); } - heartbeatExecutorService = - Executors.newScheduledThreadPool( - conf.getIntVar(HiveConf.ConfVars.HIVE_TXN_HEARTBEAT_THREADPOOL_SIZE), new ThreadFactory() { - private final AtomicInteger threadCounter = new AtomicInteger(); - - @Override - public Thread newThread(Runnable r) { - return new HeartbeaterThread(r, "Heartbeater-" + threadCounter.getAndIncrement()); - } - }); - ((ScheduledThreadPoolExecutor) heartbeatExecutorService).setRemoveOnCancelPolicy(true); } public static class HeartbeaterThread extends Thread {