[ https://issues.apache.org/jira/browse/HIVE-11948?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15008937#comment-15008937 ]
Eugene Koifman commented on HIVE-11948: --------------------------------------- There is a RB link for this patch, it may be easier to add comments there. I'll take care of separate bugs. The change in TxnHandler.checkLock() regarding heratbeat is intentional. When there is a txn, only the txn needs to have heartbeat timestamp updated since that is the only timestamp checked for aborting an expired txn. There is no way/reason to expire a single lock in a txn. This simplifies both heartbeat and expiration operations (at least when there is a txn). TxnHander unlock(), around line 581. The statement to remove the lock is "delete from HIVE_LOCKS where hl_lock_ext_id = " + extLockId + " AND hl_txnid = 0"; The "hl_txnid=0" ensures that this lock doesn't belong to a transaction. So the unlock() operation runs in a single SQL statement under most circumstances, but if the above SQL "misses", then there is some additional operations performed to produce a meaningful (best effort) message. Previously this operation required 3 SQL statements in all cases. TxnHandler.getRequiredIsolationLevel(), line 2270. Since "dbProduct" is only set once per MS start I don't think this causes any more connections to be taken out... > Investigate TxnHandler and CompactionTxnHandler to see where we improve > concurrency > ----------------------------------------------------------------------------------- > > Key: HIVE-11948 > URL: https://issues.apache.org/jira/browse/HIVE-11948 > Project: Hive > Issue Type: Bug > Components: Transactions > Affects Versions: 0.14.0 > Reporter: Eugene Koifman > Assignee: Eugene Koifman > Attachments: HIVE-11948.3.patch, HIVE-11948.4.patch, > HIVE-11948.5.patch, HIVE-11948.6.patch, HIVE-11948.7.patch, HIVE-11948.patch > > > at least some operations (or parts of operations) can run at READ_COMMITTED. > CompactionTxnHandler.setRunAs() > CompactionTxnHandler.findNextToCompact() > if update stmt includes cq_state = '" + INITIATED_STATE + "'" in WHERE clause > and logic to look for "next" candidate > CompactionTxnHandler.markCompacted() > perhaps add cq_state=WORKING_STATE in Where clause (mostly as an extra > consistency check) -- This message was sent by Atlassian JIRA (v6.3.4#6332)