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

Anoop Sam John commented on HBASE-15638:
----------------------------------------

[~saint....@gmail.com]
Some of the CP method signatures are changed now after this commit. Is it ok to 
break the CP hooks for 2.0?   We are leaking some of the PB objects (Our proto 
generated) to CPs.  That was not corrected. So this jira changed it to be from 
shaded path.  Any way it is a break. So if break is possible we better correct 
it passing our own pojos rather than PB's
Methods are
{code}
MasterObserver
        preListSnapshot
        postListSnapshot
        preSnapshot
        postSnapshot
        preCloneSnapshot
        postCloneSnapshot
        preRestoreSnapshot
        postRestoreSnapshot
        preDeleteSnapshot
        postDeleteSnapshot
        
        preSetUserQuota
        postSetUserQuota
        preSetUserQuota
        postSetUserQuota
        preSetUserQuota
        postSetUserQuota
        preSetTableQuota
        postSetTableQuota
        preSetNamespaceQuota
        postSetNamespaceQuota
        
RegionServerObserver
        preReplicateLogEntries
        postReplicateLogEntries
{code}

> Shade protobuf
> --------------
>
>                 Key: HBASE-15638
>                 URL: https://issues.apache.org/jira/browse/HBASE-15638
>             Project: HBase
>          Issue Type: Bug
>          Components: Protobufs
>            Reporter: stack
>            Assignee: stack
>            Priority: Critical
>             Fix For: 2.0.0
>
>         Attachments: 15638v2.patch, HBASE-15638.master.001.patch, 
> HBASE-15638.master.002.patch, HBASE-15638.master.003 (1).patch, 
> HBASE-15638.master.003 (1).patch, HBASE-15638.master.003 (1).patch, 
> HBASE-15638.master.003.patch, HBASE-15638.master.003.patch, 
> HBASE-15638.master.004.patch, HBASE-15638.master.005.patch, 
> HBASE-15638.master.006.patch, HBASE-15638.master.007.patch, 
> HBASE-15638.master.007.patch, HBASE-15638.master.008.patch, 
> HBASE-15638.master.009.patch, as.far.as.server.patch
>
>
> We need to change our protobuf. Currently it is pb2.5.0. As is, protobufs 
> expect all buffers to be on-heap byte arrays. It does not have facility for 
> dealing in ByteBuffers and off-heap ByteBuffers in particular. This fact 
> frustrates the off-heaping-of-the-write-path project as 
> marshalling/unmarshalling of protobufs involves a copy on-heap first.
> So, we need to patch our protobuf so it supports off-heap ByteBuffers. To 
> ensure we pick up the patched protobuf always, we need to relocate/shade our 
> protobuf and adjust all protobuf references accordingly.
> Given as we have protobufs in our public facing API, Coprocessor Endpoints -- 
> which use protobuf Service to describe new API -- a blind relocation/shading 
> of com.google.protobuf.* will break our API for CoProcessor EndPoints (CPEP) 
> in particular. For example, in the Table Interface, to invoke a method on a 
> registered CPEP, we have:
> {code}<T extends com.google.protobuf.Service,R> Map<byte[],R> 
> coprocessorService(
> Class<T> service, byte[] startKey, byte[] endKey,                             
>                 org.apache.hadoop.hbase.client.coprocessor.Batch.Call<T,R> 
> callable)
> throws com.google.protobuf.ServiceException, Throwable{code}
> This issue is how we intend to shade protobuf for hbase-2.0.0 while 
> preserving our API as is so CPEPs continue to work on the new hbase.



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

Reply via email to