[ https://issues.apache.org/jira/browse/HBASE-8393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jeffrey Zhong updated HBASE-8393: --------------------------------- Attachment: hbase-8393.patch > 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 > 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