Repository: hive
Updated Branches:
  refs/heads/branch-3 bb9a85fa3 -> 0565f64f3


HIVE-19813: SessionState.start don't have to be synchronized (Daniel Dai, 
reviewed by Sergey Shelukhin)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0565f64f
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0565f64f
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0565f64f

Branch: refs/heads/branch-3
Commit: 0565f64f3cedff37b45bd1c94cb56bb270f98e21
Parents: bb9a85f
Author: Daniel Dai <[email protected]>
Authored: Mon Jun 11 23:37:44 2018 -0700
Committer: Daniel Dai <[email protected]>
Committed: Mon Jun 11 23:38:31 2018 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/ql/session/SessionState.java | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/0565f64f/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
----------------------------------------------------------------------
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 9c52f2b..27b4d37 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
@@ -42,6 +42,7 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.commons.lang.StringUtils;
@@ -160,7 +161,7 @@ public class SessionState {
   /**
    * The flag to indicate if the session already started so we can skip the 
init
    */
-  private boolean isStarted = false;
+  private AtomicBoolean isStarted = new AtomicBoolean(false);
   /*
    * HiveHistory Object
    */
@@ -593,13 +594,14 @@ public class SessionState {
     startSs.tezSessionState.endOpen();
   }
 
-  synchronized private static void start(SessionState startSs, boolean 
isAsync, LogHelper console) {
+  private static void start(SessionState startSs, boolean isAsync, LogHelper 
console) {
     setCurrentSessionState(startSs);
 
-    if (startSs.isStarted) {
-      return;
+    synchronized(SessionState.class) {
+      if (!startSs.isStarted.compareAndSet(false, true)) {
+        return;
+      }
     }
-    startSs.isStarted = true;
 
     if (startSs.hiveHist == null){
       if 
(startSs.getConf().getBoolVar(HiveConf.ConfVars.HIVE_SESSION_HISTORY_ENABLED)) {

Reply via email to