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

Chandra Sekhar K commented on HBASE-28797:
------------------------------------------

[~vjasani] pull request is raised, please review

> New version of Region#getRowLock with timeout
> ---------------------------------------------
>
>                 Key: HBASE-28797
>                 URL: https://issues.apache.org/jira/browse/HBASE-28797
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 2.6.0, 3.0.0-beta-1
>            Reporter: Viraj Jasani
>            Assignee: Chandra Sekhar K
>            Priority: Major
>              Labels: pull-request-available
>
> Region APIs are LimitedPrivate for Coprocs. One of the APIs provided by HBase 
> for Coproc use is to acquire row level read/write lock(s):
> {code:java}
> /**
>  * Get a row lock for the specified row. All locks are reentrant. Before 
> calling this function
>  * make sure that a region operation has already been started (the calling 
> thread has already
>  * acquired the region-close-guard lock).
>  * <p>
>  * The obtained locks should be released after use by {@link 
> RowLock#release()}
>  * <p>
>  * NOTE: the boolean passed here has changed. It used to be a boolean that 
> stated whether or not
>  * to wait on the lock. Now it is whether it an exclusive lock is requested.
>  * @param row      The row actions will be performed against
>  * @param readLock is the lock reader or writer. True indicates that a 
> non-exclusive lock is
>  *                 requested
>  * @see #startRegionOperation()
>  * @see #startRegionOperation(Operation)
>  */
> RowLock getRowLock(byte[] row, boolean readLock) throws IOException; {code}
> The implementation by default uses config "hbase.rowlock.wait.duration" as 
> row level lock timeout for both read and write locks. The default value is 
> quite high (~30s).
> While updating the cluster level row lock timeout might not be worth for all 
> use cases, having new API that takes timeout param would be really helpful 
> for critical latency sensitive Coproc APIs.
>  
> The new signature should be:
> {code:java}
> RowLock getRowLock(byte[] row, boolean readLock, int timeout) throws 
> IOException; {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to