You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by lp...@apache.org on 2022/04/30 15:05:18 UTC

[hive] branch master updated: HIVE-26167: QueryStateMap is SessionState is not maintained correctly. (#3234) (Laszlo Pinter, reviewed by Peter Vary)

This is an automated email from the ASF dual-hosted git repository.

lpinter pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new de44b3727f HIVE-26167: QueryStateMap is SessionState is not maintained correctly. (#3234) (Laszlo Pinter, reviewed by Peter Vary)
de44b3727f is described below

commit de44b3727f3de57e21d5a6f6f7597796814f4f00
Author: László Pintér <47...@users.noreply.github.com>
AuthorDate: Sat Apr 30 17:05:06 2022 +0200

    HIVE-26167: QueryStateMap is SessionState is not maintained correctly. (#3234) (Laszlo Pinter, reviewed by Peter Vary)
---
 ql/src/java/org/apache/hadoop/hive/ql/Driver.java | 28 +++++++++++++++--------
 1 file changed, 18 insertions(+), 10 deletions(-)

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 5417402a1a..a475b4eb2b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
@@ -22,6 +22,7 @@ import java.io.DataInput;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.hadoop.fs.FSDataInputStream;
 import org.apache.hadoop.hive.common.ValidTxnList;
@@ -116,9 +117,6 @@ public class Driver implements IDriver {
     driverContext = new DriverContext(queryState, queryInfo, new HookRunner(queryState.getConf(), CONSOLE),
         txnManager);
     driverTxnHandler = new DriverTxnHandler(driverContext, driverState);
-    if (SessionState.get() != null) {
-      SessionState.get().addQueryState(getConf().get(HiveConf.ConfVars.HIVEQUERYID.varname), queryState);
-    }
   }
 
   @Override
@@ -214,12 +212,6 @@ public class Driver implements IDriver {
       } else {
         releaseResources();
       }
-
-      if (SessionState.get() != null) {
-        // Remove any query state reference from the session state
-        SessionState.get().removeQueryState(getConf().get(HiveConf.ConfVars.HIVEQUERYID.varname));
-      }
-      
       driverState.executionFinishedWithLocking(isFinishedWithError);
     }
 
@@ -430,7 +422,6 @@ public class Driver implements IDriver {
     if (metrics != null) {
       metrics.incrementCounter(MetricsConstant.WAITING_COMPILE_OPS, 1);
     }
-
     PerfLogger perfLogger = SessionState.getPerfLogger(true);
     perfLogger.perfLogBegin(CLASS_NAME, PerfLogger.WAIT_COMPILE);
 
@@ -531,6 +522,11 @@ public class Driver implements IDriver {
     context.setHDFSCleanup(true);
 
     driverTxnHandler.setContext(context);
+
+    if (SessionState.get() != null) {
+      QueryState queryState = getQueryState();
+      SessionState.get().addQueryState(queryState.getQueryId(), queryState);
+    }
   }
 
   private void setQueryId() {
@@ -813,6 +809,18 @@ public class Driver implements IDriver {
         }
         context = null;
       }
+
+      if (SessionState.get() != null) {
+        QueryState queryState = getQueryState();
+        // If the driver object is reused for several queries, make sure we empty the HMS query cache
+        Map<Object, Object> queryCache = SessionState.get().getQueryCache(queryState.getQueryId());
+        if (queryCache != null) {
+          queryCache.clear();
+        }
+        queryState.disableHMSCache();
+        // Remove any query state reference from the session state
+        SessionState.get().removeQueryState(queryState.getQueryId());
+      }
     } catch (Exception e) {
       LOG.debug("Exception while clearing the context ", e);
     }