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?

Reply via email to