ramkrishna.s.vasudevan created HBASE-13939:
----------------------------------------------

             Summary: Make HFileReaderImpl.getFirstKeyInBlock() to return a Cell
                 Key: HBASE-13939
                 URL: https://issues.apache.org/jira/browse/HBASE-13939
             Project: HBase
          Issue Type: Improvement
            Reporter: ramkrishna.s.vasudevan
            Assignee: ramkrishna.s.vasudevan
            Priority: Minor
             Fix For: 2.0.0


The getFirstKeyInBlock() in HFileReaderImpl is returning a BB. It is getting 
used in seekBefore cases.  Because we return a BB we create a KeyOnlyKV once 
for comparison
{code}
      if (reader.getComparator()
          .compareKeyIgnoresMvcc(
              new KeyValue.KeyOnlyKeyValue(firstKey.array(), 
firstKey.arrayOffset(),
                  firstKey.limit()), key) >= 0) {
        long previousBlockOffset = seekToBlock.getPrevBlockOffset();
        // The key we are interested in
        if (previousBlockOffset == -1) {
          // we have a 'problem', the key we want is the first of the file.
          return false;
        }
........
{code}
And if the compare fails we again create another KeyOnlyKv 
{code}
      Cell firstKeyInCurrentBlock = new 
KeyValue.KeyOnlyKeyValue(Bytes.getBytes(firstKey));
      loadBlockAndSeekToKey(seekToBlock, firstKeyInCurrentBlock, true, key, 
true);
{code}
So one object will be enough and that can be returned by getFirstKeyInBlock. 
Also will be useful when we go with Buffered backed server cell to change in 
one place. 



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

Reply via email to