[
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)