[ https://issues.apache.org/jira/browse/HIVE-26244?focusedWorklogId=777328&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-777328 ]
ASF GitHub Bot logged work on HIVE-26244: ----------------------------------------- Author: ASF GitHub Bot Created on: 02/Jun/22 07:33 Start Date: 02/Jun/22 07:33 Worklog Time Spent: 10m Work Description: 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. Issue Time Tracking ------------------- Worklog Id: (was: 777328) Time Spent: 2h 50m (was: 2h 40m) > Implementing locking for concurrent ctas > ---------------------------------------- > > Key: HIVE-26244 > URL: https://issues.apache.org/jira/browse/HIVE-26244 > Project: Hive > Issue Type: Improvement > Reporter: Simhadri G > Assignee: Simhadri G > Priority: Major > Labels: pull-request-available > Time Spent: 2h 50m > Remaining Estimate: 0h > -- This message was sent by Atlassian Jira (v8.20.7#820007)