Recently I have been testing coprocessors on Hbase 0.96 included with HDP 2.0 and the latest sandbox. I’ve successfully deployed an observer on a table via the shell.
For the endpoint, I have been trying to edit the implementation of ColumnAggregationEndpoint for my needs. I then tried loading it the same way as the observer : by disabling the table, altering the descriptor and re-enabling the table.
This is where things don’t go very well : my region doesn’t open. It is then blocked into being not enabled and not disabled at the same time, I can’t drop it nor assign it, the webUI says its state is FAILED_OPEN, and the command hbase hbck -fix etc… doesn’t help.
I just replicated the experience in the Sandbox, and got a hand on the region server logging :
2014-01-09 06:48:12,258 ERROR [RS_OPEN_REGION-sandbox:60020-1] handler.OpenRegionHandler: Failed open of region=test2,,1389276767014.52c72a06a6cebac705c78bfd2e05825f., starting to roll back the global memstore size.
java.lang.IllegalStateException: Could not instantiate a region instance.
Caused by: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method “[…].endpoint.MyEndpoint.getService()Lcom/google/protobuf/Service;” the class loader (instance of org/apache/hadoop/hbase/util/CoprocessorClassLoader) of the current class, […]/endpoint/MyEndpoint, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for interface org/apache/hadoop/hbase/coprocessor/CoprocessorService have different Class objects for the type com/google/protobuf/Service used in the signature
2014-01-09 06:48:12,259 DEBUG [RS_OPEN_REGION-sandbox:60020-1] zookeeper.ZKAssign: regionserver:60020-0x143777166470004 Transitioning 52c72a06a6cebac705c78bfd2e05825f from RS_ZK_REGION_OPENING to RS_ZK_REGION_FAILED_OPEN
So I kinda get where the bug comes from…but
1/ how to delete the tables (without restarting the master) ? do I need to manually delete some zNodes first ?
2/ is there a more documented or simpler protobuf endpoint implementation that can be dynamically loaded to a table ? I do understand things around coprocessors are still moving