HBASE-3687 Bulk assign on startup should handle a ServerNotRunningException
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1084314 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
bb28add83e
commit
c1fcc65b19
|
@ -158,6 +158,7 @@ Release 0.90.2 - Unreleased
|
||||||
HBASE-3621 The timeout handler in AssignmentManager does an RPC while
|
HBASE-3621 The timeout handler in AssignmentManager does an RPC while
|
||||||
holding lock on RIT; a big no-no (Ted Yu via Stack)
|
holding lock on RIT; a big no-no (Ted Yu via Stack)
|
||||||
HBASE-3575 Update rename table script
|
HBASE-3575 Update rename table script
|
||||||
|
HBASE-3687 Bulk assign on startup should handle a ServerNotRunningException
|
||||||
|
|
||||||
IMPROVEMENTS
|
IMPROVEMENTS
|
||||||
HBASE-3542 MultiGet methods in Thrift
|
HBASE-3542 MultiGet methods in Thrift
|
||||||
|
|
|
@ -925,9 +925,27 @@ public class AssignmentManager extends ZooKeeperListener {
|
||||||
// Move on to open regions.
|
// Move on to open regions.
|
||||||
try {
|
try {
|
||||||
// Send OPEN RPC. This can fail if the server on other end is is not up.
|
// Send OPEN RPC. This can fail if the server on other end is is not up.
|
||||||
this.serverManager.sendRegionOpen(destination, regions);
|
// If we fail, fail the startup by aborting the server. There is one
|
||||||
|
// exception we will tolerate: ServerNotRunningException. This is thrown
|
||||||
|
// between report of regionserver being up and
|
||||||
|
long maxWaitTime = System.currentTimeMillis() +
|
||||||
|
this.master.getConfiguration().getLong("hbase.regionserver.rpc.startup.waittime", 60000);
|
||||||
|
while (!this.master.isStopped()) {
|
||||||
|
try {
|
||||||
|
this.serverManager.sendRegionOpen(destination, regions);
|
||||||
|
} catch (org.apache.hadoop.hbase.ipc.ServerNotRunningException e) {
|
||||||
|
// This is the one exception to retry. For all else we should just fail
|
||||||
|
// the startup.
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
if (now > maxWaitTime) throw e;
|
||||||
|
LOG.debug("Server is not yet up; waiting up to " +
|
||||||
|
(maxWaitTime - now) + "ms", e);
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
this.master.abort("Failed assignment of regions to " + destination, t);
|
this.master.abort("Failed assignment of regions to " + destination +
|
||||||
|
"; bulk assign FAILED", t);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LOG.debug("Bulk assigning done for " + destination.getServerName());
|
LOG.debug("Bulk assigning done for " + destination.getServerName());
|
||||||
|
|
Loading…
Reference in New Issue