[ 
https://issues.apache.org/jira/browse/HBASE-2584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Purtell resolved HBASE-2584.
-----------------------------------

      Resolution: Not a Problem
    Release Note:   (was: Adds support for tryLock in HTable)
    Hadoop Flags:   (was: Incompatible change)

We've removed user row locks

> Add support for tryLock - non-blocking row lock acquisition
> -----------------------------------------------------------
>
>                 Key: HBASE-2584
>                 URL: https://issues.apache.org/jira/browse/HBASE-2584
>             Project: HBase
>          Issue Type: Improvement
>          Components: regionserver
>            Reporter: Michael Dalton
>         Attachments: 2584.patch
>
>
> Currently HBase clients can only acquire row locks via the blocking lockRow() 
> method in HTable. As ryan described on the mailing list, relying on this 
> method in rare highly contended situations can lead to (temporary) deadlock. 
> This deadlock occurs if a client acquires the lock, and a large number of 
> other clients attempt to acquire the lock and block. Each blocked client 
> awaiting lock acquisition consumes one of the limited I/O handler threads on 
> the regionserver. When lock holder wishes to release the lock, he will be 
> unable to as all I/O threads are currently serving clients that are blocking 
> on lock acquisition -- and thus no I/O threads are open to process the unlock 
> request.
> To avoid deadlock situations such as the one described above, I have added 
> support for 'tryLock' in HTable (and on the regionservers). The 'tryLock' 
> method will attempt to acquire a row lock. In the event that a lock is 
> already held, tryLock immediately returns null rather than blocking and 
> waiting for the lock to be acquire. Clients can then implement their own 
> backoff/retry policy to re-acquire the lock, determine their own timeout 
> values, etc based on their application performance characteristics rather 
> than block on the regionserver and tie up precious I/O regionserver handler 
> threads for an indefinite amount of time. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to