You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2016/07/02 02:09:58 UTC

[2/2] hive git commit: HIVE-14072 : QueryIds reused across different queries (Sergey Shelukhin, reviewed by Vaibhav Gumashta)

HIVE-14072 : QueryIds reused across different queries (Sergey Shelukhin, reviewed by Vaibhav Gumashta)


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

Branch: refs/heads/branch-2.1
Commit: 68e8ee0b18ca2906e8eda266f480086548f9e844
Parents: 7fbb722
Author: Sergey Shelukhin <se...@apache.org>
Authored: Fri Jul 1 18:59:55 2016 -0700
Committer: Sergey Shelukhin <se...@apache.org>
Committed: Fri Jul 1 19:02:55 2016 -0700

----------------------------------------------------------------------
 .../java/org/apache/hadoop/hive/ql/QTestUtil.java     |  1 +
 ql/src/java/org/apache/hadoop/hive/ql/Driver.java     | 14 +++++++++++---
 .../hive/ql/processors/CommandProcessorFactory.java   |  2 ++
 .../apache/hive/service/cli/operation/Operation.java  |  4 ----
 .../hive/service/cli/operation/SQLOperation.java      |  4 ++++
 .../service/cli/operation/SQLOperationDisplay.java    |  2 +-
 6 files changed, 19 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/68e8ee0b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
----------------------------------------------------------------------
diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
index 11e529d..fa68b75 100644
--- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
+++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
@@ -1656,6 +1656,7 @@ public class QTestUtil {
   public void resetParser() throws SemanticException {
     drv.init();
     pd = new ParseDriver();
+    queryState = new QueryState(conf);
     sem = new SemanticAnalyzer(queryState);
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/68e8ee0b/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 2263192..553260f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
@@ -299,9 +299,6 @@ public class Driver implements CommandProcessor {
         SessionState.get().getConf() : new HiveConf()), null);
   }
 
-  /**
-   * for backwards compatibility with current tests
-   */
   public Driver(HiveConf conf) {
     this(new QueryState(conf), null);
   }
@@ -2029,4 +2026,15 @@ public class Driver implements CommandProcessor {
   public void setOperationId(String opId) {
     this.operationId = opId;
   }
+
+  /** 
+   * Resets QueryState to get new queryId on Driver reuse.
+   */
+  public void resetQueryState() {
+    // Note: Driver cleanup for reuse at this point is not very clear. The assumption here is that
+    // repeated compile/execute calls create new contexts, plan, etc., so we don't need to worry
+    // propagating queryState into those existing fields, or resetting them.
+    releaseResources();
+    this.queryState = new QueryState(queryState.getConf());
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/68e8ee0b/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java
index c343b0e..e61864e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java
@@ -120,6 +120,8 @@ public final class CommandProcessorFactory {
       if (drv == null) {
         drv = new Driver();
         mapDrivers.put(conf, drv);
+      } else {
+        drv.resetQueryState();
       }
       drv.init();
       return drv;

http://git-wip-us.apache.org/repos/asf/hive/blob/68e8ee0b/service/src/java/org/apache/hive/service/cli/operation/Operation.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/operation/Operation.java b/service/src/java/org/apache/hive/service/cli/operation/Operation.java
index 0932884..4e56ea5 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/Operation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/Operation.java
@@ -104,10 +104,6 @@ public abstract class Operation {
     queryState = new QueryState(parentSession.getHiveConf(), confOverlay, runAsync);
   }
 
-  public QueryState getQueryState() {
-    return queryState;
-  }
-
   public Future<?> getBackgroundHandle() {
     return backgroundHandle;
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/68e8ee0b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
index 33f95fb..4f8883f 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
@@ -655,4 +655,8 @@ public class SQLOperation extends ExecuteStatementOperation {
       }
     }
   }
+
+  public String getExecutionEngine() {
+    return queryState.getConf().getVar(HiveConf.ConfVars.HIVE_EXECUTION_ENGINE);
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/68e8ee0b/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
----------------------------------------------------------------------
diff --git a/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java b/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
index c521706..3cfeccc 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
@@ -41,7 +41,7 @@ public class SQLOperationDisplay {
   public SQLOperationDisplay(SQLOperation sqlOperation) throws HiveSQLException {
     this.state = sqlOperation.getState();
     this.userName = sqlOperation.getParentSession().getUserName();
-    this.executionEngine = sqlOperation.getQueryState().getConf().getVar(HiveConf.ConfVars.HIVE_EXECUTION_ENGINE);
+    this.executionEngine = sqlOperation.getExecutionEngine();
     this.beginTime = System.currentTimeMillis();
     this.operationId = sqlOperation.getHandle().getHandleIdentifier().toString();
   }