diff --git service/src/java/org/apache/hive/service/cli/session/SessionManager.java service/src/java/org/apache/hive/service/cli/session/SessionManager.java index 25c6f38..e262b72 100644 --- service/src/java/org/apache/hive/service/cli/session/SessionManager.java +++ service/src/java/org/apache/hive/service/cli/session/SessionManager.java @@ -18,9 +18,9 @@ package org.apache.hive.service.cli.session; -import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -41,11 +41,15 @@ * */ public class SessionManager extends CompositeService { + private static final Log LOG = LogFactory.getLog(CompositeService.class); + private HiveConf hiveConf; - private final Map handleToSession = new HashMap(); - private OperationManager operationManager = new OperationManager(); - private static final Object sessionMapLock = new Object(); + + private final Map handleToSession = + new ConcurrentHashMap(); + private final OperationManager operationManager = new OperationManager(); + private ThreadPoolExecutor backgroundOperationPool; public SessionManager() { @@ -55,7 +59,6 @@ public SessionManager() { @Override public synchronized void init(HiveConf hiveConf) { this.hiveConf = hiveConf; - operationManager = new OperationManager(); int backgroundPoolSize = hiveConf.getIntVar(ConfVars.HIVE_SERVER2_ASYNC_EXEC_THREADS); LOG.info("HiveServer2: Async execution thread pool size: " + backgroundPoolSize); int backgroundPoolQueueSize = hiveConf.getIntVar(ConfVars.HIVE_SERVER2_ASYNC_EXEC_WAIT_QUEUE_SIZE); @@ -113,9 +116,9 @@ public SessionHandle openSession(String username, String password, Map