[ 
https://issues.apache.org/jira/browse/HIVE-15376?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15764953#comment-15764953
 ] 

Wei Zheng commented on HIVE-15376:
----------------------------------

Previously heartbeat was started inside acquireLocksWithHeartbeatDelay, which 
will first call acquireLocks and then startHeartbeat (if there's lock). So just 
calling acquireLocks is fine as it didn't start any heartbeat.

But now we've moved the startHeartbeat inside acquireLocks, so we need a param 
to differentiate cases whether or not to start heartbeat.

> Improve heartbeater scheduling for transactions
> -----------------------------------------------
>
>                 Key: HIVE-15376
>                 URL: https://issues.apache.org/jira/browse/HIVE-15376
>             Project: Hive
>          Issue Type: Bug
>          Components: Transactions
>    Affects Versions: 2.2.0
>            Reporter: Wei Zheng
>            Assignee: Wei Zheng
>         Attachments: HIVE-15376.1.patch, HIVE-15376.10.patch, 
> HIVE-15376.11.patch, HIVE-15376.2.patch, HIVE-15376.3.patch, 
> HIVE-15376.4.patch, HIVE-15376.5.patch, HIVE-15376.6.patch, 
> HIVE-15376.7.patch, HIVE-15376.8.patch, HIVE-15376.9.patch
>
>
> HIVE-12366 improved the heartbeater logic by bringing down the gap between 
> the lock acquisition and first heartbeat, but that's not enough, there may 
> still be some issue, e.g.
>  Time A: a transaction is opened
>  Time B: acquireLocks is called (blocking call), but it can take a long time 
> to actually acquire the locks and return if the system is busy
>  Time C: as acquireLocks returns, the first heartbeat is sent
> If hive.txn.timeout < C - A, then the transaction will be timed out and 
> aborted, thus causing failure.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to