[ 
https://issues.apache.org/jira/browse/HBASE-1765?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Gray updated HBASE-1765:
---------------------------------

      Resolution: Fixed
    Hadoop Flags: [Reviewed]
          Status: Resolved  (was: Patch Available)

Committed to branch and trunk.

> Delay Result deserialization until asked for and permit access to the raw 
> binary to prevent forced deserialization
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-1765
>                 URL: https://issues.apache.org/jira/browse/HBASE-1765
>             Project: Hadoop HBase
>          Issue Type: Improvement
>          Components: client
>    Affects Versions: 0.20.0
>            Reporter: Jonathan Gray
>            Assignee: Jonathan Gray
>             Fix For: 0.20.1, 0.21.0
>
>         Attachments: HBASE-1765-v1.patch, HBASE-1765-v2.patch
>
>
> We have our own API that we use to access HBase from other languages like 
> erlang, python, c, etc...
> The Java gateway that maps from the actual HBase API to our internal API 
> wants to pass the raw binary received for a Result.  As is, we have to 
> deserialize into an array of KeyValues and then re-serialize into a flat 
> byte[].
> We would like to propose modifying Result to not build the KeyValue[] until 
> it's asked for via client methods (.raw() or .sorted() or any of the map 
> methods).  This is already how the map methods work (we don't build the map 
> until it's asked for the first time).
> The only API change would be adding an additional Result.getBytes() method 
> the get the raw underlying byte[] that was sent from the server.  
> The Result.readFields(DataInput) would then only read in the full byte[].  
> Would add an additional private method Result.readFields() that generated the 
> KeyValue[].  That would be called whenever a client asks for anything besides 
> .getBytes().
> Since all access to Result is done through those methods (KeyValue[] private 
> and not directly accessible w/o using those methods) this should not impact 
> any existing code.
> Thoughts?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to