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 2014/02/13 13:04:19 UTC

[jira] [Commented] (HBASE-7320) Remove KeyValue.getBuffer()

    [ https://issues.apache.org/jira/browse/HBASE-7320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13900263#comment-13900263 ] 

ramkrishna.s.vasudevan commented on HBASE-7320:
-----------------------------------------------

Replacing KeyValues with cells
==============================
I am trying to work on this, as a first step seeing how to replace the references to Keyvalue as cells and seeing how to ensure a new KeyValue format to fit in this code base.
Currently everywhere in the code we are passing KeyValue in the args and also returning keyvalue everywhere.
There are some places where there are specific instances of Keyvalue methods getting used like in TimeRangeTracker isDeleteColumnOrFamily. Already CellUtil.java has some of them.
I think we can move this to some helper class.

When we trying to apply a different format of KeyValue say if we have individual byte arrays for rows, families, qualifiers, values and tags (if present), like Cellcodec
we need to handle these cases.  
As in the comment 
https://issues.apache.org/jira/browse/HBASE-7320?focusedCommentId=13882073&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13882073
we may have to change the existing keyvalue only but support a new format, that would help us in avoiding these problems.

Also take the case if we implement a new Cell type then every where we may need to instantiate that new class but reference it with a cell. And change the args
and return type every where to Cell.
In turn this would require changes through out the code.
KVComparator some of the apis still take KeyValue as the argument.  I think we could change that.
Should Cell interface itself extend HeapSize and Cloneable?  I think this would be needed. - (I can file JIRA for these two points).  
Memstore.maybeCloneWithAllocator is one place where may have to use the clone method of the Cell's implementation

In StoreFileScanner we do reseekTo and seekTo that seeks to a key ( this is not the rowkey).  So can we change this to the rowkey?
Also I would suggest that all the StoreScanner, KeyValueSCanner etc. interfaces can be changed to work with Cell like the seek, reseek etc.  Let me know what you guys feel so that I can raise individual subtasks for them.

> Remove KeyValue.getBuffer()
> ---------------------------
>
>                 Key: HBASE-7320
>                 URL: https://issues.apache.org/jira/browse/HBASE-7320
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Lars Hofhansl
>            Assignee: stack
>             Fix For: 0.99.0
>
>         Attachments: 7320-simple.txt
>
>
> In many places this is simple task of just replacing the method name.
> There, however, quite a few places where we assume that:
> # the entire KV is backed by a single byte array
> # the KVs key portion is backed by a single byte array
> Some of those can easily be fixed, others will need their own jiras.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)