hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nick Dimiduk (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-15686) unable to dynamically load a table coprocessor if it belongs in org.apache.hadoop
Date Tue, 26 Apr 2016 06:20:13 GMT

    [ https://issues.apache.org/jira/browse/HBASE-15686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15257622#comment-15257622
] 

Nick Dimiduk commented on HBASE-15686:
--------------------------------------

I'd prefer to not go changing this for 1.1 if we can avoid it. What's the pressing need that
prevents picking this up in 1.2? It's out already.

If the need is dire for 1.1.x, please take the branch-1 patch on HBASE-13706 for a spin, verifies
it's working for you. By my read, applying that patch will allow for a less strict set of
coprocs to load, not more strick, so should be acceptable by BC rules. Please also do a triple-check
that it's not breaking Phoenix, especially consider the classes from the phoenix jar that
come in the {{org.apache.hadoop.hbase}} package.

> unable to dynamically load a table coprocessor if it belongs in org.apache.hadoop
> ---------------------------------------------------------------------------------
>
>                 Key: HBASE-15686
>                 URL: https://issues.apache.org/jira/browse/HBASE-15686
>             Project: HBase
>          Issue Type: Bug
>          Components: Coprocessors
>    Affects Versions: 1.0.1
>            Reporter: Sangjin Lee
>            Assignee: Ted Yu
>         Attachments: 15686.v2.txt, 15686.wip
>
>
> As part of Hadoop's Timeline Service v.2 (YARN-2928), we're adding a table coprocessor
(YARN-4062). However, we're finding that the coprocessor cannot be loaded dynamically. A relevant
snippet for the exception:
> {noformat}
> java.io.IOException: Class org.apache.hadoop.yarn.server.timelineservice.storage.flow.FlowRunCoprocessor
cannot be loaded
>     at org.apache.hadoop.hbase.master.HMaster.sanityCheckTableDescriptor(HMaster.java:1329)
>     at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1269)
>     at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:398)
>     at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42436)
>     at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
>     at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
>     at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
>     at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
>     at java.lang.Thread.run(Thread.java:745)
> Caused by: java.io.IOException: Class org.apache.hadoop.yarn.server.timelineservice.storage.flow.FlowRunCoprocessor
cannot be loaded
>     at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.testTableCoprocessorAttrs(RegionCoprocessorHost.java:324)
>     at org.apache.hadoop.hbase.master.HMaster.checkClassLoading(HMaster.java:1483)
>     at org.apache.hadoop.hbase.master.HMaster.sanityCheckTableDescriptor(HMaster.java:1327)
>     ... 8 more
> Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.server.timelineservice.storage.flow.FlowRunCoprocessor
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>     at org.apache.hadoop.hbase.util.CoprocessorClassLoader.loadClass(CoprocessorClassLoader.java:275)
>     at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.testTableCoprocessorAttrs(RegionCoprocessorHost.java:322)
>     ... 10 more
> {noformat}
> We tracked it down to the fact that {{CoprocessorClassLoader}} regarding all hadoop classes
as exempt from loading from the coprocessor jar. Since our coprocessor sits in the coprocessor
jar, and yet the loading of this class is delegated to the parent which does not have this
jar, the classloading fails.
> What would be nice is the ability to exclude certain classes from the exempt classes
so that they can be loaded via table coprocessor classloader. See hadoop's {{ApplicationClassLoader}}
for a similar feature.
> Is there any other way to load this coprocessor at the table scope?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message