[
https://issues.apache.org/jira/browse/HBASE-11875?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14118740#comment-14118740
]
Andrew Purtell commented on HBASE-11875:
----------------------------------------
bq. See HBASE-11118 How would we avoid this scenario doing a
google.protobuf.util module?
+1, definitely check out the gory details of that issue. ByteStringer ended up
being the least bad option among it, forking protobuf into an HBase maven
module (along the lines as you suggest above), and adopting protostuff.
> Referencing external package com/google/protobuf/ inside hbase-protcol module
> won't work in OSGI environment
> ------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-11875
> URL: https://issues.apache.org/jira/browse/HBASE-11875
> Project: HBase
> Issue Type: Improvement
> Components: Protobufs
> Affects Versions: 0.98.6
> Environment: OSGI container
> Reporter: ayache khettar
>
> Hi
> HbaseZeroCopyByteString class isn't accessible in OSGI based environment. The
> reason is that it ends up in a separate route package within an OSGI bundle.
> As such the class isn't viewable by the classLoader.
> I understand that the hbase-module isn't an osgi bundle, but there is another
> project which makes use of this module to generate an osgi bundle for the
> OSGI container:
> https://github.com/apache/servicemix4-bundles/tree/trunk/hbase-0.98.0-hadoop2.
> If you get hold of the binary or source artefact from maven, unzip the jar
> and you will see the structure of the project:
> com/google/ (classes defined in this package are not visible by the
> classLoader).
> org/apache/hbase
> I understand the reason of having a foreign package, because
> LiteralByteString is package protected. It would be nice to work out another
> way of extending google protobuf classes. I would recommend going for
> composition as opposed to inheritance that will solve the problem.
> Regards,
> Ayache
> Caused by: java.lang.NoClassDefFoundError:
> com/google/protobuf/HBaseZeroCopyByteString
> at
> org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:908)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:132)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1466)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:701)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:699)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> at
> org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:121)[252:org.apache.servicemix.bundles.hbase:0.98.0.hadoop2-inps]
> ... 56 more
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)