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