Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Incomplete
-
None
-
None
-
None
Description
StoreScanner#next will check the 'totalBytesRead' not exceed configured ‘hbase.table.max.rowsize’ for each family. However, if there are several families, the single row will also achieve unexpected big size even if 'totalBytesRead' of each family not exceed 'hbase.table.max.rowsize'. This may cause the region server fail because of OOM. What about checking single row size across families in StoreScanner#next(List<Cell>, int)?
long totalBytesRead = 0; // ==> compute the size of cells have been read for (Cell cell : outResult) { totalBytesRead += CellUtil.estimatedSerializedSizeOf(old); } LOOP: while((cell = this.heap.peek()) != null) { ...