You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "ayache khettar (JIRA)" <ji...@apache.org> on 2014/09/01 18:49:20 UTC

[jira] [Created] (HBASE-11875) Referencing external package com/google/protobuf/ inside hbase-protcol module won't work in OSGI environment

ayache khettar created HBASE-11875:
--------------------------------------

             Summary: 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 cause goggle base class defines package level methods. It would be nice to work out another way of extending google protobuf classes.

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)