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

Xiang Li commented on HBASE-14882:
----------------------------------

The following 2 Put#addImmutable() are updated by the patch
{code}
public Put addImmutable(byte [] family, byte [] qualifier, byte [] value)
{code}
and
{code}
public Put addImmutable(byte [] family, byte [] qualifier, long ts, byte [] 
value)
{code}

In master branch, 
the first one is used:
- (master) In MeteTableAccessor, when writing region assignment info into 
"hbase:meta" table
- (master) In RegionStateStore, when updating region state in "hbase:meta" table
- (master) In TableNamespaceManager, when creating namespace (insert into 
"hbase:namespace" table)
- (server) In AccessControlLists, when updating "hbase:acl" table
- (server) In DefaultVisibilityLabelServiceImpl, when adding system visibility 
labels
- (thrift) In ThriftServerRunner.HBaseHandler and ThriftUtilities
- Some UT

the second one is used:
- (master) In MeteTableAccessor, when writing "hbase:meta" table
- (master) In FavoredNodeAssignmentHelper when writing "hbase:meta" table
- (rest) In RowResource
- (thrift) In ThriftUtilities

I am testing those code paths to verify if the two new Put#addImmutable() work 
and also checking if the inputs to Put#addImmutable() (family, qualifier and 
value) in those usages are immutable

> Provide a Put API that adds the provided family, qualifier, value without 
> copying
> ---------------------------------------------------------------------------------
>
>                 Key: HBASE-14882
>                 URL: https://issues.apache.org/jira/browse/HBASE-14882
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 1.2.0
>            Reporter: Jerry He
>            Assignee: Xiang Li
>             Fix For: 2.0.0
>
>         Attachments: HBASE-14882.master.000.patch, 
> HBASE-14882.master.001.patch, HBASE-14882.master.002.patch
>
>
> In the Put API, we have addImmutable()
> {code}
>  /**
>    * See {@link #addColumn(byte[], byte[], byte[])}. This version expects
>    * that the underlying arrays won't change. It's intended
>    * for usage internal HBase to and for advanced client applications.
>    */
>   public Put addImmutable(byte [] family, byte [] qualifier, byte [] value)
> {code}
> But in the implementation, the family, qualifier and value are still being 
> copied locally to create kv.
> Hopefully we should provide an API that truly uses immutable family, 
> qualifier and value.



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

Reply via email to