[ https://issues.apache.org/jira/browse/HBASE-14157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Purtell updated HBASE-14157: ----------------------------------- Fix Version/s: 0.98.14 Picked to 0.98 > Interfaces implemented by subclasses should be checked when registering > CoprocessorService > ------------------------------------------------------------------------------------------ > > Key: HBASE-14157 > URL: https://issues.apache.org/jira/browse/HBASE-14157 > Project: HBase > Issue Type: Bug > Reporter: Alok Lal > Assignee: Ted Yu > Fix For: 2.0.0, 0.98.14, 1.2.0, 1.1.2, 1.3.0 > > Attachments: 14157-v1.txt, 14157-v2.txt, 14157-v2.txt, 14157-v3.txt, > 14157-v4.txt > > > Alok reported seeing the following exception when subclass of class which > implements CoprocessorService is used for hbase.coprocessor.region.classes : > {code} > hbase(main):015:0> grant 'mktg1', 'RWC', 'iemployee' > ERROR: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: No > registered coprocessor service found for name AccessControlService in region > hbase:acl,,1437137157604.2daf735ea38da95e9ba249db6b63b79c. > at > org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7367) > at > org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1873) > at > org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1855) > at > org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32209) > at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2112) > at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:101) > at > org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130) > at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107) > {code} > The root cause is in the following code of RegionCoprocessorHost: > {code} > for (Class<?> c : implClass.getInterfaces()) { > if (CoprocessorService.class.isAssignableFrom(c)) { > region.registerService( ((CoprocessorService)instance).getService() ); > } > } > {code} > We currently only check the interfaces directly implemented by the underlying > class. > What should be done is to check all the interfaces implemented by class > itself and its superclasses. -- This message was sent by Atlassian JIRA (v6.3.4#6332)