You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Ted Yu (JIRA)" <ji...@apache.org> on 2018/05/12 15:11:00 UTC
[jira] [Commented] (HBASE-20574) prevRowLock seems not working
[ https://issues.apache.org/jira/browse/HBASE-20574?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16473133#comment-16473133 ]
Ted Yu commented on HBASE-20574:
--------------------------------
This is related code from {{getRowLockInternal}} :
{code}
RowLockImpl prevRowLockImpl = (RowLockImpl)prevRowLock;
if ((prevRowLockImpl != null) && (prevRowLockImpl.getLock() ==
rowLockContext.readWriteLock.readLock())) {
success = true;
return prevRowLock;
}
{code}
Why do you think the above return would never be executed ?
> prevRowLock seems not working
> -----------------------------
>
> Key: HBASE-20574
> URL: https://issues.apache.org/jira/browse/HBASE-20574
> Project: HBase
> Issue Type: Improvement
> Components: regionserver
> Reporter: Yi Zheng
> Priority: Major
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> In HRegion.java, getRowLockInternal using prevRowLock to check whether this lock is obtained before, but it may not work as imagine.
> Because this parameter passed as the last lock the thread obtained, and the code always be like this:
> {code:java}
> for (byte[] rows: rowsToLock) {
> rowLock = getRowLockInternal(row, prevRowLock);
> if (rowLock != prevRowLock){
> acquiredRowLocks.add(rowLock);
> prevRowLock = rowLock;
> }
> }{code}
> prevRowLock will never equal to the rowLockContext's lock in getRowLockInternal. I think this parameter is redundant.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)