Description
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:
<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
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.
Attachments
Attachments
Issue Links
- breaks
-
HBASE-17975 TokenUtil.obtainToken squashes remote exceptions
- Closed
- depends upon
-
HBASE-15174 Client Public API should not have PB objects in 2.0
- Closed
- is related to
-
HADOOP-13363 Upgrade protobuf from 2.5.0 to something newer
- Open
- relates to
-
HBASE-16769 Deprecate/remove PB references from MasterObserver and RegionServerObserver
- Closed
-
MESOS-1203 Shade protobuf dependency in Mesos Java library
- Resolved
-
HBASE-16757 Integrate functionality currently done up as Coprocessor Endpoints into core.
- Open
-
HBASE-16756 InterfaceAudience annotate our protobuf; distinguish internal; publish public
- Resolved
-
HBASE-16567 Upgrade to protobuf-3.1.x
- Closed
- links to