Hello,

I am trying to debug a coprocessor code on hbase 0.94.24, which seems to work 
well on 0.94.5, but I cannot make it work on 0.94.24.

Here is the copy of some coprocessor init code:

public class TestEndpoint implements TestIface, HTableWrapper {
 …
  @Override
  public void start(CoprocessorEnvironment env) throws IOException {
    this.env = env;
conf = env.getConfiguration();
HBaseAdmin admin = new HBaseAdmin(conf);
if (!admin.tableExists(SOME_TABLE)) {
   //do something if this table is not there
…

When hbase starts, in the log file I noticed that when regionserver load this 
coprocessor, it will hang there inside the admin.tableExists() function. That 
API will try to access the zookeeper znode ‘root-region-server’, so I start the 
‘hbase zkcli’ and run ‘ls /hbase’ at that time, and I found the znode 
‘root-region-server’ is not created. Since the coprocessor want to access a 
table, it must look up the –ROOT- region, which location is saved in that 
znode, but that znode is not there. Then it hangs there for ever. If I disable 
this coprocessor, hbase can start good and I can see ‘root-region-server’ znode 
created there.

This coprocessor code is claimed to work well on 0.94.5, so I am wondering if 
there is something changed about the sequence of ‘load coprocessor’ and the 
‘create root-region-server znode’ in hbase 0.94 serials after 0.94.5?

So my basic question is : when znode ‘root-region-server’ is created? Who 
create it? And is there any fixed timing sequence of this initialization 
between the coprocessor loading time?

By the way, I cannot find anywhere to download a 0.94.5 hbase source code, can 
anyone tell me if there is somewhere I can find it?

I know old version is obsolete , but this is not for production, but for 
research, so please help me if you have any idea. Thanks very much in advance.

Thanks,
Ming

Reply via email to