Duo Zhang created HBASE-19694:
---------------------------------
Summary: The initialization order for a fresh cluster is incorrect
Key: HBASE-19694
URL: https://issues.apache.org/jira/browse/HBASE-19694
Project: HBase
Issue Type: Bug
Reporter: Duo Zhang
The cluster id will set once we become the active master in
finishActiveMasterInitialization, but the blockUntilBecomingActiveMaster and
finishActiveMasterInitialization are both called in a thread to make the
constructor of HMaster return without blocking. And since HMaster itself is
also a HRegionServer, it will create a Connection and then start calling
reportForDuty. And when creating the ConnectionImplementation, we will read the
cluster id from zk, but the cluster id may have not been set yet since it is
set in another thread, we will get an exception and use the default cluster id
instead.
I always get this when running UTs which will start a mini cluster
{noformat}
2018-01-03 15:16:37,916 WARN [M:0;zhangduo-ubuntu:32848]
client.ConnectionImplementation(528): Retrieve cluster id failed
java.util.concurrent.ExecutionException:
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode
for /hbase/hbaseid
at
java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at
java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
at
org.apache.hadoop.hbase.client.ConnectionImplementation.retrieveClusterId(ConnectionImplementation.java:526)
at
org.apache.hadoop.hbase.client.ConnectionImplementation.<init>(ConnectionImplementation.java:286)
at
org.apache.hadoop.hbase.client.ConnectionUtils$ShortCircuitingClusterConnection.<init>(ConnectionUtils.java:141)
at
org.apache.hadoop.hbase.client.ConnectionUtils$ShortCircuitingClusterConnection.<init>(ConnectionUtils.java:137)
at
org.apache.hadoop.hbase.client.ConnectionUtils.createShortCircuitConnection(ConnectionUtils.java:185)
at
org.apache.hadoop.hbase.regionserver.HRegionServer.createClusterConnection(HRegionServer.java:781)
at
org.apache.hadoop.hbase.regionserver.HRegionServer.setupClusterConnection(HRegionServer.java:812)
at
org.apache.hadoop.hbase.regionserver.HRegionServer.preRegistrationInitialization(HRegionServer.java:827)
at
org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:938)
at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:550)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.zookeeper.KeeperException$NoNodeException:
KeeperErrorCode = NoNode for /hbase/hbaseid
at org.apache.zookeeper.KeeperException.create(KeeperException.java:111)
at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
at
org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient$ZKTask$1.exec(ReadOnlyZKClient.java:163)
at
org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.run(ReadOnlyZKClient.java:311)
... 1 more
{noformat}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)