diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index 8d4ea4d..ee09547 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -1190,7 +1190,11 @@ public class RSRpcServices implements HBaseRPCErrorHandler, ByteBufferCell bbCell = (ByteBufferCell) c; ByteBuffer bb = bbCell.getValueByteBuffer(); if (bb != lastBlock) { - context.incrementResponseBlockSize(bb.capacity()); + // When HFileBlocks are backed by BB, we don't advance the position in the BB while + // creating cells out of that and populate results. All will be relative operation over + // these BBs. So we can just use bb.remaining() to know the size of this block + // See HBASE-17874 + context.incrementResponseBlockSize(bb.remaining()); lastBlock = bb; } } else {