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.
- breaks
-
HBASE-17975 TokenUtil.obtainToken squashes remote exceptions
-
- Resolved
-
- depends upon
-
HBASE-15174 Client Public API should not have PB objects in 2.0
-
- Resolved
-
- 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
-
- Resolved
-
-
MESOS-1203 Shade protobuf dependency in Mesos Java library
-
- Resolved
-
-
HBASE-16756 InterfaceAudience annotate our protobuf; distinguish internal; publish public
-
- Open
-
-
HBASE-16757 Integrate functionality currently done up as Coprocessor Endpoints into core.
-
- Open
-
-
HBASE-16567 Upgrade to protobuf-3.1.x
-
- Resolved
-
- links to