You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vi...@apache.org on 2016/03/22 22:05:04 UTC

[1/2] hive git commit: HIVE-13153: SessionID is appended to thread name twice (Prasanth Jayachandran reviewed by Vikram Dixit, Sergey Shelukhin)

Repository: hive
Updated Branches:
  refs/heads/branch-2.0 2552a93ef -> d4453d1bb


HIVE-13153: SessionID is appended to thread name twice (Prasanth Jayachandran reviewed by Vikram Dixit, Sergey Shelukhin)


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

Branch: refs/heads/branch-2.0
Commit: 1971269461b1080d384619990aa0e84ee5cb96c7
Parents: 2552a93
Author: Prasanth Jayachandran <j....@gmail.com>
Authored: Tue Mar 8 15:26:29 2016 -0600
Committer: vikram <vi...@hortonworks.com>
Committed: Tue Mar 22 13:58:26 2016 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/cli/CliDriver.java   |  7 ++++---
 .../hadoop/hive/ql/session/SessionState.java    | 22 ++++++++++++++++++++
 .../service/cli/session/HiveSessionImpl.java    | 17 ++-------------
 3 files changed, 28 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/19712694/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
----------------------------------------------------------------------
diff --git a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
index e77b7f1..b6fe77c 100644
--- a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
+++ b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
@@ -118,8 +118,8 @@ public class CliDriver {
     CliSessionState ss = (CliSessionState) SessionState.get();
     ss.setLastCommand(cmd);
 
-    String callerInfo = ss.getConf().getLogIdVar(ss.getSessionId());
-    Thread.currentThread().setName(callerInfo + " " + originalThreadName);
+    ss.updateThreadName();
+
     // Flush the print stream, so it doesn't include output from the last command
     ss.err.flush();
     String cmd_trimmed = cmd.trim();
@@ -711,7 +711,8 @@ public class CliDriver {
       SessionState.start(ss);
     }
 
-    Thread.currentThread().setName(conf.getLogIdVar(ss.getSessionId()) + " " + originalThreadName);
+    ss.updateThreadName();
+
     // execute cli driver work
     try {
       return executeDriver(ss, conf, oproc);

http://git-wip-us.apache.org/repos/asf/hive/blob/19712694/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 d50b285..93833fc 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
@@ -397,6 +397,28 @@ public class SessionState {
     return (conf.getVar(HiveConf.ConfVars.HIVESESSIONID));
   }
 
+  public void updateThreadName() {
+    final String sessionId = getSessionId();
+    final String logPrefix = getConf().getLogIdVar(sessionId);
+    final String currThreadName = Thread.currentThread().getName();
+    if (!currThreadName.contains(logPrefix)) {
+      final String newThreadName = logPrefix + " " + currThreadName;
+      LOG.info("Updating thread name to {}", newThreadName);
+      Thread.currentThread().setName(newThreadName);
+    }
+  }
+
+  public void resetThreadName() {
+    final String sessionId = getSessionId();
+    final String logPrefix = getConf().getLogIdVar(sessionId);
+    final String currThreadName = Thread.currentThread().getName();
+    if (currThreadName.contains(logPrefix)) {
+      final String[] names = currThreadName.split(logPrefix);
+      LOG.info("Resetting thread name to {}", names[names.length - 1]);
+      Thread.currentThread().setName(names[names.length - 1]);
+    }
+  }
+
   /**
    * Initialize the transaction manager.  This is done lazily to avoid hard wiring one
    * transaction manager at the beginning of the session.  In general users shouldn't change

http://git-wip-us.apache.org/repos/asf/hive/blob/19712694/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
index b1b1d8f..c95a86e 100644
--- a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
+++ b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
@@ -324,10 +324,7 @@ public class HiveSessionImpl implements HiveSession {
       lastAccessTime = System.currentTimeMillis();
     }
     // set the thread name with the logging prefix.
-    String logPrefix = getHiveConf().getLogIdVar(sessionState.getSessionId());
-    LOG.info(
-        "Prefixing the thread name (" + Thread.currentThread().getName() + ") with " + logPrefix);
-    Thread.currentThread().setName(logPrefix + Thread.currentThread().getName());
+    sessionState.updateThreadName();
     Hive.set(sessionHive);
   }
 
@@ -342,17 +339,7 @@ public class HiveSessionImpl implements HiveSession {
     if (sessionState != null) {
       // can be null in-case of junit tests. skip reset.
       // reset thread name at release time.
-      String[] names = Thread.currentThread().getName()
-          .split(getHiveConf().getLogIdVar(sessionState.getSessionId()));
-      String threadName = null;
-      if (names.length > 1) {
-        threadName = names[names.length - 1];
-      } else if (names.length == 1) {
-        threadName = names[0];
-      } else {
-        threadName = "";
-      }
-      Thread.currentThread().setName(threadName);
+      sessionState.resetThreadName();
     }
 
     SessionState.detachSession();


[2/2] hive git commit: HIVE-13286: Query ID is being reused across queries (Aihua Xu via Vikram Dixit K)

Posted by vi...@apache.org.
HIVE-13286: Query ID is being reused across queries (Aihua Xu via Vikram Dixit K)


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

Branch: refs/heads/branch-2.0
Commit: d4453d1bb398cf174c22e478be56facec36a9eed
Parents: 1971269
Author: vikram <vi...@hortonworks.com>
Authored: Tue Mar 22 13:41:37 2016 -0700
Committer: vikram <vi...@hortonworks.com>
Committed: Tue Mar 22 13:58:33 2016 -0700

----------------------------------------------------------------------
 cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java |  3 +++
 .../hive/service/cli/session/TestHiveSessionImpl.java  |  5 +++--
 ql/src/java/org/apache/hadoop/hive/ql/Driver.java      |  6 ------
 .../hive/service/cli/session/HiveSessionImpl.java      | 13 ++++++-------
 4 files changed, 12 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/d4453d1b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
----------------------------------------------------------------------
diff --git a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
index b6fe77c..2bcb56d 100644
--- a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
+++ b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
@@ -68,6 +68,7 @@ import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.ql.CommandNeedRetryException;
 import org.apache.hadoop.hive.ql.Driver;
+import org.apache.hadoop.hive.ql.QueryPlan;
 import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
 import org.apache.hadoop.hive.ql.exec.mr.HadoopJobExecHelper;
 import org.apache.hadoop.hive.ql.exec.tez.TezJobExecHelper;
@@ -120,6 +121,8 @@ public class CliDriver {
 
     ss.updateThreadName();
 
+    conf.set(HiveConf.ConfVars.HIVEQUERYID.varname, QueryPlan.makeQueryId());
+
     // Flush the print stream, so it doesn't include output from the last command
     ss.err.flush();
     String cmd_trimmed = cmd.trim();

http://git-wip-us.apache.org/repos/asf/hive/blob/d4453d1b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java
----------------------------------------------------------------------
diff --git a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java
index 8a32a07..04ed557 100644
--- a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java
+++ b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java
@@ -27,6 +27,7 @@ import org.apache.hive.service.cli.thrift.TProtocolVersion;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
+import static org.mockito.Matchers.*;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -68,8 +69,8 @@ public class TestHiveSessionImpl {
     Mockito.when(operation.getHandle()).thenReturn(opHandle);
     Map<String, String> confOverlay = new HashMap<String, String>();
     String hql = "drop table if exists table_not_exists";
-    Mockito.when(operationManager.newExecuteStatementOperation(session, hql, confOverlay,
-            true)).thenReturn(operation);
+    Mockito.when(operationManager.newExecuteStatementOperation(same(session), eq(hql),
+        (Map<String, String>)Mockito.any(), eq(true))).thenReturn(operation);
 
     try {
 

http://git-wip-us.apache.org/repos/asf/hive/blob/d4453d1b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
index 04db836..1ec71ea 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
@@ -404,13 +404,7 @@ public class Driver implements CommandProcessor {
     }
     saveSession(queryState);
 
-    // Generate new query id if it's not set for CLI case. If it's session based,
-    // query id is passed in from the client or initialized when the session starts.
     String queryId = conf.getVar(HiveConf.ConfVars.HIVEQUERYID);
-    if (queryId == null || queryId.isEmpty()) {
-      queryId = QueryPlan.makeQueryId();
-      conf.setVar(HiveConf.ConfVars.HIVEQUERYID, queryId);
-    }
 
     LOG.info("Compiling command(queryId=" + queryId + "): " + queryStr);
 

http://git-wip-us.apache.org/repos/asf/hive/blob/d4453d1b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
index c95a86e..2314e26 100644
--- a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
+++ b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
@@ -432,16 +432,15 @@ public class HiveSessionImpl implements HiveSession {
           throws HiveSQLException {
     acquire(true);
 
-    // Create the queryId if the client doesn't pass in.
-    // Reuse the client's queryId if exists.
+    // Make a copy of confOverlay
     if (confOverlay == null) {
       confOverlay = new HashMap<String, String>();
+    } else {
+      Map<String, String> conf = new HashMap<String, String>();
+      conf.putAll(confOverlay);
+      confOverlay = conf;
     }
-    String queryId = confOverlay.get(HiveConf.ConfVars.HIVEQUERYID.varname);
-    if (queryId == null || queryId.isEmpty()) {
-      queryId = QueryPlan.makeQueryId();
-      confOverlay.put(HiveConf.ConfVars.HIVEQUERYID.varname, queryId);
-    }
+    confOverlay.put(HiveConf.ConfVars.HIVEQUERYID.varname, QueryPlan.makeQueryId());
 
     OperationManager operationManager = getOperationManager();
     ExecuteStatementOperation operation = operationManager