diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index 408c92e..0c83f70 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -139,6 +139,10 @@ */ private boolean isHiveServerQuery = false; + /** + * The flag to indicate if the session already started so we can skip the init + */ + private boolean isStarted = false; /* * HiveHistory Object */ @@ -534,9 +538,14 @@ public static void endStart(SessionState startSs) startSs.tezSessionState.endOpen(); } - private static void start(SessionState startSs, boolean isAsync, LogHelper console) { + synchronized private static void start(SessionState startSs, boolean isAsync, LogHelper console) { setCurrentSessionState(startSs); + if (startSs.isStarted) { + return; + } + startSs.isStarted = true; + if (startSs.hiveHist == null){ if (startSs.getConf().getBoolVar(HiveConf.ConfVars.HIVE_SESSION_HISTORY_ENABLED)) { startSs.hiveHist = new HiveHistoryImpl(startSs);