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