[ 
https://issues.apache.org/jira/browse/HIVE-27201?focusedWorklogId=858779&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-858779
 ]

ASF GitHub Bot logged work on HIVE-27201:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 24/Apr/23 20:19
            Start Date: 24/Apr/23 20:19
    Worklog Time Spent: 10m 
      Work Description: deniskuzZ commented on code in PR #4180:
URL: https://github.com/apache/hive/pull/4180#discussion_r1175743602


##########
service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java:
##########
@@ -401,11 +401,11 @@ private synchronized void acquireAfterOpLock(boolean 
userAccess) {
     // set the thread name with the logging prefix.
     sessionState.updateThreadName();
 
-    try {
-      setSessionHive();
-    } catch (HiveSQLException e) {
-      throw new RuntimeException(e);
-    }
+    // If Hive.get() is being shared across different sessions,
+    // sessionHive and Hive.get() may be different, in such case,
+    // the risk of deadlock on HiveMetaStoreClient#SynchronizedHandler can 
happen.
+    // Refresh the thread-local Hive to avoid the deadlock.
+    Hive.set(sessionHive);

Review Comment:
   the idea of HIVE-25085 was that MetaStore Clients no longer shared across 
sessions. if that is true, how that could cause a deadlock? 
   not sure how your code fixes the issue as `Hive.set(sessionHive)` could be 
executed concurrently from multiple sessions. Am I missing something?





Issue Time Tracking
-------------------

    Worklog Id:     (was: 858779)
    Time Spent: 5h 10m  (was: 5h)

> Inconsistency between session Hive and thread-local Hive may cause HS2 
> deadlock
> -------------------------------------------------------------------------------
>
>                 Key: HIVE-27201
>                 URL: https://issues.apache.org/jira/browse/HIVE-27201
>             Project: Hive
>          Issue Type: Bug
>          Components: HiveServer2
>            Reporter: Zhihua Deng
>            Assignee: Zhihua Deng
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 5h 10m
>  Remaining Estimate: 0h
>
> The HiveServer2’s server handler can switch to process the operation from 
> other session, in such case, the Hive cached in ThreadLocal is not the same 
> as the Hive in SessionState, and can be referenced by another session. 
> If the two handlers swap their sessions to process the DatabaseMetaData 
> request, and the HiveMetastoreClientFactory obtains the Hive via Hive.get(), 
> then there is a chance that the deadlock can happen.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to