Viraj Jasani created HBASE-28797: ------------------------------------ Summary: 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: 3.0.0-beta-1, 2.6.0 Reporter: Viraj Jasani
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)