diff --git ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index a97a43f..0684aac 100644 --- ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -249,6 +249,13 @@ public static SessionState start(HiveConf conf) { } /** + * Sets the given session state in the thread local var for sessions. + */ + public static void setCurrentSessionState(SessionState session) { + tss.set(session); + } + + /** * set current session to existing session object if a thread is running * multiple sessions - it must call this method with the new session object * when switching from one session to another. @@ -256,7 +263,7 @@ public static SessionState start(HiveConf conf) { */ public static SessionState start(SessionState startSs) { - tss.set(startSs); + setCurrentSessionState(startSs); if(startSs.hiveHist == null){ if (startSs.getConf().getBoolVar(HiveConf.ConfVars.HIVE_SESSION_HISTORY_ENABLED)) { diff --git service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java index ca4f7b6..4ee1b74 100644 --- service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java +++ service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java @@ -149,7 +149,7 @@ public void run() throws HiveSQLException { SessionState ss = SessionState.get(); @Override public void run() { - SessionState.start(ss); + SessionState.setCurrentSessionState(ss); try { runInternal(getConfigForOperation()); } catch (HiveSQLException e) { diff --git service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java index 5b2a30c..cfda752 100644 --- service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java +++ service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java @@ -89,6 +89,7 @@ public HiveSessionImpl(String username, String password, Map ses hiveConf.set(ConfVars.HIVESESSIONID.varname, sessionHandle.getHandleIdentifier().toString()); sessionState = new SessionState(hiveConf); + SessionState.start(sessionState); } public SessionManager getSessionManager() { @@ -108,7 +109,9 @@ public void setOperationManager(OperationManager operationManager) { } protected synchronized void acquire() throws HiveSQLException { - SessionState.start(sessionState); + // need to make sure that the this connections session state is + // stored in the thread local for sessions. + SessionState.setCurrentSessionState(sessionState); } protected synchronized void release() { @@ -312,7 +315,7 @@ public OperationHandle getColumns(String catalogName, String schemaName, opHandleSet.add(opHandle); return opHandle; } catch (HiveSQLException e) { - operationManager.closeOperation(opHandle); + operationManager.closeOperation(opHandle); throw e; } finally { release();