Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.4.7
-
None
-
Reviewed
Description
RSRpcServices#mutate and RSRpcServices#multi we clear CellScanner immediately when get CellScanner from HBaseRpcController,so need it in RSRpcServices#replay and RSRpcServices#replicateWALEntry also.
// rpc controller is how we bring in data via the back door; it is unprotobuf'ed data. // It is also the conduit via which we pass back data. HBaseRpcController controller = (HBaseRpcController)rpcc; CellScanner cellScanner = controller != null ? controller.cellScanner(): null; if (controller != null) { controller.setCellScanner(null); }
if not we will see the error like the following
2021-10-18 12:04:13,971 WARN [RpcServer.default.FPBQ.Fifo.handler=29,queue=2,port=16022] ipc.RpcServer: RpcServer.default.FPBQ.Fifo.handler=29,queue=2,port=16022: caught: java.lang.IllegalArgumentException: ReferenceCount : 0 (expected: > 0) at org.apache.hbase.thirdparty.io.netty.util.internal.ObjectUtil.checkPositive(ObjectUtil.java:80) at org.apache.hadoop.hbase.nio.ByteBuff.checkRefCount(ByteBuff.java:70) at org.apache.hadoop.hbase.nio.SingleByteBuff.hasRemaining(SingleByteBuff.java:155) at org.apache.hadoop.hbase.codec.KeyValueCodec$ByteBuffKeyValueDecoder.advance(KeyValueCodec.java:90) at org.apache.hadoop.hbase.ipc.CellBlockBuilder.encodeCellsTo(CellBlockBuilder.java:191) at org.apache.hadoop.hbase.ipc.CellBlockBuilder.buildCellBlockStream(CellBlockBuilder.java:228) at org.apache.hadoop.hbase.ipc.ServerCall.setResponse(ServerCall.java:243) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:168) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
Attachments
Issue Links
- links to