HBASE-5918 Master will block forever at startup if root server dies between assigning root and assigning meta (Chunhui)
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1352161 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c85185a68f
commit
4cb2174c29
|
@ -635,8 +635,7 @@ Server {
|
||||||
|
|
||||||
// Make sure root and meta assigned before proceeding.
|
// Make sure root and meta assigned before proceeding.
|
||||||
if (!assignRootAndMeta(status)) return;
|
if (!assignRootAndMeta(status)) return;
|
||||||
serverShutdownHandlerEnabled = true;
|
enableServerShutdownHandler();
|
||||||
this.serverManager.expireDeadNotExpiredServers();
|
|
||||||
|
|
||||||
// Update meta with new HRI if required. i.e migrate all HRI with HTD to
|
// Update meta with new HRI if required. i.e migrate all HRI with HTD to
|
||||||
// HRI with out HTD in meta and update the status in ROOT. This must happen
|
// HRI with out HTD in meta and update the status in ROOT. This must happen
|
||||||
|
@ -719,6 +718,18 @@ Server {
|
||||||
return new ServerManager(master, services);
|
return new ServerManager(master, services);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If ServerShutdownHandler is disabled, we enable it and expire those dead
|
||||||
|
* but not expired servers.
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
private void enableServerShutdownHandler() throws IOException {
|
||||||
|
if (!serverShutdownHandlerEnabled) {
|
||||||
|
serverShutdownHandlerEnabled = true;
|
||||||
|
this.serverManager.expireDeadNotExpiredServers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check <code>-ROOT-</code> and <code>.META.</code> are assigned. If not,
|
* Check <code>-ROOT-</code> and <code>.META.</code> are assigned. If not,
|
||||||
* assign them.
|
* assign them.
|
||||||
|
@ -771,6 +782,7 @@ Server {
|
||||||
splitLogAndExpireIfOnline(currentMetaServer);
|
splitLogAndExpireIfOnline(currentMetaServer);
|
||||||
}
|
}
|
||||||
assignmentManager.assignMeta();
|
assignmentManager.assignMeta();
|
||||||
|
enableServerShutdownHandler();
|
||||||
this.catalogTracker.waitForMeta();
|
this.catalogTracker.waitForMeta();
|
||||||
// Above check waits for general meta availability but this does not
|
// Above check waits for general meta availability but this does not
|
||||||
// guarantee that the transition has completed
|
// guarantee that the transition has completed
|
||||||
|
|
Loading…
Reference in New Issue