You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "ramkrishna.s.vasudevan (JIRA)" <ji...@apache.org> on 2015/06/19 07:56:00 UTC

[jira] [Created] (HBASE-13939) Make HFileReaderImpl.getFirstKeyInBlock() to return a Cell

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)