You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hbase.apache.org by Howard <rj...@gmail.com> on 2012/07/16 16:14:44 UTC

Why startRegionOperation get the lock.readLock().lock(),still need row lock?

*When I use hbase,I found an Error log:*
*2012-07-14 15:41:04,023 ERROR
org.apache.hadoop.hbase.regionserver.HRegionServer:
java.lang.NullPointerException
        at
java.util.concurrent.ConcurrentHashMap.remove(ConcurrentHashMap.java:922)
        at
org.apache.hadoop.hbase.regionserver.HRegion.releaseRowLock(HRegion.java:3044)
        at
org.apache.hadoop.hbase.regionserver.HRegion.delete(HRegion.java:1653)
        at
org.apache.hadoop.hbase.regionserver.HRegionServer.delete(HRegionServer.java:2513)
        at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:364)
        at
org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1376)*
*So I read the source code,It because get the row lock timeout in the
delete method.*
*But I find the startRegionOperation method,"This method needs to be called
before any public call that reads or * modifies data.",why we use this
method to get the lock.readLock().lock(),we still need the row lock?*

Re: Why startRegionOperation get the lock.readLock().lock(),still need row lock?

Posted by Alex Baranau <al...@gmail.com>.
* The first lock is for guarding closes of Region. I.e. for forbidding
reading/writing to the Region which is being closed.
* The second lock is row lock.

Alex Baranau
------
Sematext :: http://blog.sematext.com/ :: Hadoop - HBase - ElasticSearch -
Solr

On Mon, Jul 16, 2012 at 10:14 AM, Howard <rj...@gmail.com> wrote:

> *When I use hbase,I found an Error log:*
> *2012-07-14 15:41:04,023 ERROR
> org.apache.hadoop.hbase.regionserver.HRegionServer:
> java.lang.NullPointerException
>         at
> java.util.concurrent.ConcurrentHashMap.remove(ConcurrentHashMap.java:922)
>         at
>
> org.apache.hadoop.hbase.regionserver.HRegion.releaseRowLock(HRegion.java:3044)
>         at
> org.apache.hadoop.hbase.regionserver.HRegion.delete(HRegion.java:1653)
>         at
>
> org.apache.hadoop.hbase.regionserver.HRegionServer.delete(HRegionServer.java:2513)
>         at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
>         at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at
>
> org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:364)
>         at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1376)*
> *So I read the source code,It because get the row lock timeout in the
> delete method.*
> *But I find the startRegionOperation method,"This method needs to be called
> before any public call that reads or * modifies data.",why we use this
> method to get the lock.readLock().lock(),we still need the row lock?*
>



-- 
Alex Baranau
------
Sematext :: http://blog.sematext.com/ :: Hadoop - HBase - ElasticSearch -
Solr