deepankar created HBASE-15361:
---------------------------------

             Summary: Remove unnecessary or Document  constraints on 
BucketCache possible bucket sizes
                 Key: HBASE-15361
                 URL: https://issues.apache.org/jira/browse/HBASE-15361
             Project: HBase
          Issue Type: Sub-task
          Components: BucketCache
            Reporter: deepankar
            Priority: Minor


When we were trying to tune the bucket sizes {{hbase.bucketcache.bucket.sizes}} 
according to our workload, we encountered an issue due to the way offset is 
stored in the bucket entry. We divide the offset into integer base and byte 
value and it assumes that all bucket offsets  will be a multiple of 256 (left 
shifting by 8). See the code below
{code}

    long offset() { // Java has no unsigned numbers
      long o = ((long) offsetBase) & 0xFFFFFFFF;
      o += (((long) (offset1)) & 0xFF) << 32;
      return o << 8;
    }

    private void setOffset(long value) {
      assert (value & 0xFF) == 0;
      value >>= 8;
      offsetBase = (int) value;
      offset1 = (byte) (value >> 32);
    }
{code}

This was there to save 3 bytes per BucketEntry instead of using long and when 
there are no other fields in the Bucket Entry, but now there are lot of fields 
in the bucket entry , This not documented so we could either document the 
constraint that it should be a strict 256 bytes multiple of just go away with 
this constraint.  




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to