Hi ,all We are using batch put to insert rows, and sometimes get the following WARN in the region server log:
<log> 2015-07-23 10:08:49,684 WARN [B.defaultRpcServer.handler=5,queue=5,port=60020] regionserver.HRegion: Failed getting lock in batch put, row=BHXYHZFIHHR3ECON101002150723999999 org.apache.hadoop.hbase.regionserver.WrongRegionException: Requested row out of range for row lock on HRegion atpco:ttf_fare,C,1437145538123.9c2b8cb846b318045f2ad6b5c87fef21., startKey='C', getEndKey()='D', row='BHXYHZFIHHR3ECON101002150723999999' at org.apache.hadoop.hbase.regionserver.HRegion.checkRow(HRegion.java:3456) at org.apache.hadoop.hbase.regionserver.HRegion.getRowLock(HRegion.java:3474) at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutation(HRegion.java:2394) at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2261) at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2213) at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2217) at org.apache.hadoop.hbase.regionserver.HRegionServer.doBatchOp(HRegionServer.java:4386) at org.apache.hadoop.hbase.regionserver.HRegionServer.doNonAtomicRegionMutation(HRegionServer.java:3588) at org.apache.hadoop.hbase.regionserver.HRegionServer.multi(HRegionServer.java:3477) at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:29593) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108) at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:114) </log> And the WARN message is logged no-stop. I think the batch put dived into the dead loop. And i look up into the source code, and find the batch put will never stop if got WrongRegionException for some row. Any body know how to avoid this situation? Any idea will be appreciated!
