You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Jeffrey Zhong (JIRA)" <ji...@apache.org> on 2013/04/23 03:55:16 UTC

[jira] [Created] (HBASE-8393) Testcase TestHeapSize#testMutations is wrong

Jeffrey Zhong created HBASE-8393:
------------------------------------

             Summary: 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


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