Zhuoyue Huang created HBASE-25387: ------------------------------------- Summary: TagRewriteCell's getSerializedSize() method gets the size wrong Key: HBASE-25387 URL: https://issues.apache.org/jira/browse/HBASE-25387 Project: HBase Issue Type: Bug Affects Versions: 3.0.0-alpha-1 Reporter: Zhuoyue Huang Assignee: Zhuoyue Huang
We found that the serialized size of Cell is inconsistent with the size actually written to ByteBuffer when the tag is empty. {code:java} Cell originalCell = ExtendedCellBuilderFactory.create(CellBuilderType.DEEP_COPY) .setRow(Bytes.toBytes("row")) .setFamily(Bytes.toBytes("family")) .setQualifier(Bytes.toBytes("qualifier")) .setTimestamp(HConstants.LATEST_TIMESTAMP) .setType(KeyValue.Type.Maximum.getCode()) .setValue(Bytes.toBytes("value")) .build(); ByteBuffer byteBuffer = ByteBuffer.allocate(100); Cell cell = PrivateCellUtil.createCell(originalCell, "".getBytes()); int lengthWritten = KeyValueUtil.appendTo(cell, byteBuffer, 0, true); System.out.println("Cell serializedSize: " + cell.getSerializedSize()); System.out.println("Bytes written to ByteBuffer: " + lengthWritten); ByteArrayOutputStream output = new ByteArrayOutputStream(100); PrivateCellUtil.writeCell(cell, output, true); System.out.println("Bytes written to OutputStream: " + output.size()); {code} Run the above code to see the following output {code:java} Cell serializedSize: 45 Bytes written to ByteBuffer: 43 Bytes written to OutputStream: 45 {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)