[
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.