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