[
https://issues.apache.org/jira/browse/HBASE-8393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ted Yu updated HBASE-8393:
--------------------------
Resolution: Fixed
Hadoop Flags: Reviewed
Status: Resolved (was: Patch Available)
> Testcase TestHeapSize#testMutations is wrong
> --------------------------------------------
>
> Key: HBASE-8393
> URL: https://issues.apache.org/jira/browse/HBASE-8393
> Project: HBase
> Issue Type: Bug
> Components: test
> Reporter: Jeffrey Zhong
> Assignee: Jeffrey Zhong
> Fix For: 0.98.0, 0.95.1
>
> Attachments: hbase-8393.patch
>
>
> I happened to check this test case and there are several existing errors to
> make it pass. You can reproduce the test case failure by adding a new field
> into Mutation, the test case will either fail on a 64 bit system or 32 bit
> one.
> Below are errors I found in the test case:
> 1) The test case is using {code}row=new byte[]{0}{code} which is an array
> with length=1 while ClassSize.estimateBase can only calculate base class
> size(without counting field array length)
> 2) Add ClassSize.REFERENCE twice in the following code because
> ClassSize.estimateBase adds all reference fields already. {code}expected +=
> ClassSize.align(ClassSize.TREEMAP + ClassSize.REFERENCE);{code}
> 3) ClassSize.estimateBase round up the sum of length of reference fields +
> primitive fields + Array while Mutation.MUTATION_OVERHEAD aligns the sum of
> length of a different set of fields. Therefore, there will be round up
> differences for class Increment because it introduces a new reference field
> TimeRange tr when the test case runs on a 32bit and 64 bit system.
> {code}
> ...
> long prealign_size = coeff[0] + align(coeff[1] * ARRAY) + coeff[2] *
> REFERENCE;
> // Round up to a multiple of 8
> long size = align(prealign_size);
> ...
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira