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

Reply via email to