You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by Shoubo Li <li...@gmail.com> on 2016/10/11 09:21:25 UTC

HBase wrong region exception

Hi, I encountered a question bothering me for several days.

my environment:

   1. HBase Server: 1.0.11
   2. HBase Client: 1.0.5-SNAPSHOT

The region server always print warn log as follow:

    2016-10-11 16:52:33,489 WARN
[RW.default.writeRpcServer.handler=46,queue=4,port=16020]
regionserver.HRegion: Failed getting lock in batch put,
row=0799\x00\x00\x01W\x90\x90\xE7&\x0A\x02m2=\x1E\x00\x00\x01
org.apache.hadoop.hbase.regionserver.WrongRegionException: Requested
row out of range for row lock on HRegion
hzop:vtrace,7280,1466058715841.f8db60758f6905bc0d81c23d03aba360.,
startKey='7280', getEndKey()='7290',
row='0799\x00\x00\x01W\x90\x90\xE7&\x0A\x02m2=\x1E\x00\x00\x01'
    at org.apache.hadoop.hbase.regionserver.HRegion.checkRow(HRegion.java:3853)
    at org.apache.hadoop.hbase.regionserver.HRegion.getRowLockInternal(HRegion.java:3884)
    at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutation(HRegion.java:2614)
    at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2478)
    at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2432)
    at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2436)
    at org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:642)
    at org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:606)
    at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:1836)
    ^Cat org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod
    ClientProtos.java:31451)
    at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
    at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
    at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
    at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
    at java.lang.Thread.run(Thread.java:745)

There are two questions:

   1. why WrongRegionException happen? I known old hbase client version has
   bugs, but latter version fixed it.
   2.

   why region server always print warn log? I also has read the source
   code, I found every time RpcExcecutor will call

   consumerLoop(callQueues.get(index));

   so I stop the hbase client job, so that no data would be written to this
   table. however, the warn log always looped print. I wonder that the wrong
   row data is still in the queue, so every loop will fetch from the queue and
   handle it.

any idea?

Re: HBase wrong region exception

Posted by Enis Söztutar <en...@apache.org>.
You maybe hitting this bug:
https://issues.apache.org/jira/browse/HBASE-13471

There is no 1.0.11 version. Did you mean 1.0.1? 1.0 is EOL'ed some time
ago. I suggest to update both the client and the server to 1.1.x or 1.2.x
as soon as possible.

Enis

On Tue, Oct 11, 2016 at 6:58 AM, Ted Yu <yu...@gmail.com> wrote:

> Suggest keeping client version the same as the version on server.
>
> Can you check log of the region server where hbase:meta was hosted around
> the time this happened ?
> There may be some clue.
>
> Thanks
>
> On Tue, Oct 11, 2016 at 2:21 AM, Shoubo Li <li...@gmail.com> wrote:
>
> > Hi, I encountered a question bothering me for several days.
> >
> > my environment:
> >
> >    1. HBase Server: 1.0.11
> >    2. HBase Client: 1.0.5-SNAPSHOT
> >
> > The region server always print warn log as follow:
> >
> >     2016-10-11 16:52:33,489 WARN
> > [RW.default.writeRpcServer.handler=46,queue=4,port=16020]
> > regionserver.HRegion: Failed getting lock in batch put,
> > row=0799\x00\x00\x01W\x90\x90\xE7&\x0A\x02m2=\x1E\x00\x00\x01
> > org.apache.hadoop.hbase.regionserver.WrongRegionException: Requested
> > row out of range for row lock on HRegion
> > hzop:vtrace,7280,1466058715841.f8db60758f6905bc0d81c23d03aba360.,
> > startKey='7280', getEndKey()='7290',
> > row='0799\x00\x00\x01W\x90\x90\xE7&\x0A\x02m2=\x1E\x00\x00\x01'
> >     at org.apache.hadoop.hbase.regionserver.HRegion.checkRow(
> > HRegion.java:3853)
> >     at org.apache.hadoop.hbase.regionserver.HRegion.
> > getRowLockInternal(HRegion.java:3884)
> >     at org.apache.hadoop.hbase.regionserver.HRegion.
> > doMiniBatchMutation(HRegion.java:2614)
> >     at org.apache.hadoop.hbase.regionserver.HRegion.
> > batchMutate(HRegion.java:2478)
> >     at org.apache.hadoop.hbase.regionserver.HRegion.
> > batchMutate(HRegion.java:2432)
> >     at org.apache.hadoop.hbase.regionserver.HRegion.
> > batchMutate(HRegion.java:2436)
> >     at org.apache.hadoop.hbase.regionserver.RSRpcServices.
> > doBatchOp(RSRpcServices.java:642)
> >     at org.apache.hadoop.hbase.regionserver.RSRpcServices.
> > doNonAtomicRegionMutation(RSRpcServices.java:606)
> >     at org.apache.hadoop.hbase.regionserver.RSRpcServices.
> > multi(RSRpcServices.java:1836)
> >     ^Cat org.apache.hadoop.hbase.protobuf.generated.
> > ClientProtos$ClientService$2.callBlockingMethod
> >     ClientProtos.java:31451)
> >     at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
> >     at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
> >     at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(
> > RpcExecutor.java:130)
> >     at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.
> java:107)
> >     at java.lang.Thread.run(Thread.java:745)
> >
> > There are two questions:
> >
> >    1. why WrongRegionException happen? I known old hbase client version
> has
> >    bugs, but latter version fixed it.
> >    2.
> >
> >    why region server always print warn log? I also has read the source
> >    code, I found every time RpcExcecutor will call
> >
> >    consumerLoop(callQueues.get(index));
> >
> >    so I stop the hbase client job, so that no data would be written to
> this
> >    table. however, the warn log always looped print. I wonder that the
> > wrong
> >    row data is still in the queue, so every loop will fetch from the
> queue
> > and
> >    handle it.
> >
> > any idea?
> >
>

Re: HBase wrong region exception

Posted by Ted Yu <yu...@gmail.com>.
Suggest keeping client version the same as the version on server.

Can you check log of the region server where hbase:meta was hosted around
the time this happened ?
There may be some clue.

Thanks

On Tue, Oct 11, 2016 at 2:21 AM, Shoubo Li <li...@gmail.com> wrote:

> Hi, I encountered a question bothering me for several days.
>
> my environment:
>
>    1. HBase Server: 1.0.11
>    2. HBase Client: 1.0.5-SNAPSHOT
>
> The region server always print warn log as follow:
>
>     2016-10-11 16:52:33,489 WARN
> [RW.default.writeRpcServer.handler=46,queue=4,port=16020]
> regionserver.HRegion: Failed getting lock in batch put,
> row=0799\x00\x00\x01W\x90\x90\xE7&\x0A\x02m2=\x1E\x00\x00\x01
> org.apache.hadoop.hbase.regionserver.WrongRegionException: Requested
> row out of range for row lock on HRegion
> hzop:vtrace,7280,1466058715841.f8db60758f6905bc0d81c23d03aba360.,
> startKey='7280', getEndKey()='7290',
> row='0799\x00\x00\x01W\x90\x90\xE7&\x0A\x02m2=\x1E\x00\x00\x01'
>     at org.apache.hadoop.hbase.regionserver.HRegion.checkRow(
> HRegion.java:3853)
>     at org.apache.hadoop.hbase.regionserver.HRegion.
> getRowLockInternal(HRegion.java:3884)
>     at org.apache.hadoop.hbase.regionserver.HRegion.
> doMiniBatchMutation(HRegion.java:2614)
>     at org.apache.hadoop.hbase.regionserver.HRegion.
> batchMutate(HRegion.java:2478)
>     at org.apache.hadoop.hbase.regionserver.HRegion.
> batchMutate(HRegion.java:2432)
>     at org.apache.hadoop.hbase.regionserver.HRegion.
> batchMutate(HRegion.java:2436)
>     at org.apache.hadoop.hbase.regionserver.RSRpcServices.
> doBatchOp(RSRpcServices.java:642)
>     at org.apache.hadoop.hbase.regionserver.RSRpcServices.
> doNonAtomicRegionMutation(RSRpcServices.java:606)
>     at org.apache.hadoop.hbase.regionserver.RSRpcServices.
> multi(RSRpcServices.java:1836)
>     ^Cat org.apache.hadoop.hbase.protobuf.generated.
> ClientProtos$ClientService$2.callBlockingMethod
>     ClientProtos.java:31451)
>     at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
>     at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
>     at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(
> RpcExecutor.java:130)
>     at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
>     at java.lang.Thread.run(Thread.java:745)
>
> There are two questions:
>
>    1. why WrongRegionException happen? I known old hbase client version has
>    bugs, but latter version fixed it.
>    2.
>
>    why region server always print warn log? I also has read the source
>    code, I found every time RpcExcecutor will call
>
>    consumerLoop(callQueues.get(index));
>
>    so I stop the hbase client job, so that no data would be written to this
>    table. however, the warn log always looped print. I wonder that the
> wrong
>    row data is still in the queue, so every loop will fetch from the queue
> and
>    handle it.
>
> any idea?
>