hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Purtell (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-11875) Referencing external package com/google/protobuf/ inside hbase-protcol module won't work in OSGI environment
Date Tue, 02 Sep 2014 21:03:21 GMT

    [ 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

View raw message