[ https://issues.apache.org/jira/browse/HBASE-11118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14029336#comment-14029336 ]
Todd Lipcon commented on HBASE-11118: ------------------------------------- Have we already considered using our own classloader to isolate our dependency? Forking PB into HBase makes me nervous from a maintenance perspective. PB does new releases once a year or so and they tend to have good improvements - aren't we going to end up stuck on a past version? Instead, could we put some more pressure on the upstream protobuf maintainers to include the ZeroCopyLiteralByteString, or at least make its super-class non-final in order to support this? Alternatively, could we get shading to work by adding an extra indirection package that builds a "jar-with-dependencies" of both hbase-protocol and protobuf, and then shades that and re-publishes as an "hbase-protocol-with-shaded-pb" pom? Then the rest of HBase could depend on that? > non environment variable solution for "IllegalAccessError: class > com.google.protobuf.ZeroCopyLiteralByteString cannot access its superclass > com.google.protobuf.LiteralByteString" > ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: HBASE-11118 > URL: https://issues.apache.org/jira/browse/HBASE-11118 > Project: HBase > Issue Type: Bug > Affects Versions: 0.98.2 > Reporter: André Kelpe > Assignee: Andrew Purtell > Priority: Blocker > Fix For: 0.99.0, 0.98.4 > > Attachments: HBASE-11118-0.98.patch.gz, HBASE-11118-trunk.patch.gz, > shade_attempt.patch > > > I am running into the problem described in > https://issues.apache.org/jira/browse/HBASE-10304, while trying to use a > newer version within cascading.hbase > (https://github.com/cascading/cascading.hbase). > One of the features of cascading.hbase is that you can use it from lingual > (http://www.cascading.org/projects/lingual/), our SQL layer for hadoop. > lingual has a notion of providers, which are fat jars that we pull down > dynamically at runtime. Those jars give users the ability to talk to any > system or format from SQL. They are added to the classpath programmatically > before we submit jobs to a hadoop cluster. > Since lingual does not know upfront , which providers are going to be used in > a given run, the HADOOP_CLASSPATH trick proposed in the JIRA above is really > clunky and breaks the ease of use we had before. No other provider requires > this right now. > It would be great to have a programmatical way to fix this, when using fat > jars. -- This message was sent by Atlassian JIRA (v6.2#6252)