when client call lockRow,region server may allocate duplicated lock id, this 
may cause that client  is blocked.
---------------------------------------------------------------------------------------------------------------

                 Key: HBASE-5329
                 URL: https://issues.apache.org/jira/browse/HBASE-5329
             Project: HBase
          Issue Type: Bug
          Components: regionserver
    Affects Versions: 0.90.3
         Environment: Red Hat Enterprise Linux Server release 5.4 
            Reporter: liaoxiangui


protected long addRowLock(Integer r, HRegion region) throws 
LeaseStillHeldException
{
        long lockId = -1L;
        lockId = rand.nextLong();               //!!!may generate duplicated 
id,bug?
        String lockName = String.valueOf(lockId);
        rowlocks.put(lockName, r);
        this.leases.createLease(lockName, new RowLockListener(lockName, 
region));
        return lockId;
}

In addRowLock(),rand may generate duplicated lock id, it may cause regionserver 
throw exception(Leases$LeaseStillHeldException).The client will be blocked 
until old rowlock is released.


2012-02-03 15:21:50,084 ERROR 
org.apache.hadoop.hbase.regionserver.HRegionServer: Error obtaining row lock 
(fsOk: true)
org.apache.hadoop.hbase.regionserver.Leases$LeaseStillHeldException
        at 
org.apache.hadoop.hbase.regionserver.Leases.createLease(Leases.java:150)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.addRowLock(HRegionServer.java:1986)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.lockRow(HRegionServer.java:1963)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:570)
        at 
org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1039)


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to