deniskuzZ commented on code in PR #3307:
URL: https://github.com/apache/hive/pull/3307#discussion_r887639411


##########
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java:
##########
@@ -5283,6 +5284,39 @@ is performed on that db (e.g. show tables, created 
table, etc).
             return response;
           }
         }
+
+        if (isValidTxn(txnId)) {
+          LockType lockType = LockTypeUtil.getLockTypeFromEncoding(lockChar)
+                  .orElseThrow(() -> new MetaException("Unknown lock type: " + 
lockChar));
+
+          if (lockType == LockType.EXCL_WRITE && blockedBy.state == 
LockState.ACQUIRED) {

Review Comment:
   I don't really like that we are adding extra overhead in checkLocks method, 
it's already a sensitive part performance-wise. I think we should try to 
optimize: if it's CTAS we know that it could only be blocked by another 
artificial CTAS or DROP database (EXCLUSIVE + EXCL_WRITE), so no need to run an 
expensive checkLock `BIG` query. Also that would mean that we can just give up 
and do not check against TXNS table what is the type of blocking TXN.
   Also, I would expect IOW to behave similarly to CTAS, currently it doesn't 
fail and is executed in sequential order, however, it doesn't require any extra 
cleanup in case of failure. So I am OK with the selected approach, but we 
should try to optimize if possible.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to