if (!servers.contains(sn)) { LOG.info("RegionServer ephemeral node deleted, processing expiration [{}]", sn); serverManager.expireServer(sn); iter.remove();
LOG.info("Triggering server recovery; existingServer " + existingServer + " looks stale, new server:" + serverName); expireServer(existingServer);
LOG.info("start to submit the SCP for the same serverName {} which should fail", testServer); Assert.assertFalse( UTIL.getHBaseCluster().getMaster().getServerManager().expireServer(testServer)); Procedure procedure = UTIL.getHBaseCluster().getMaster().getProcedures().stream() .filter(p -> (p instanceof ServerCrashProcedure) testServer); Assert.assertFalse( UTIL.getHBaseCluster().getMaster().getServerManager().expireServer(testServer)); serverNode = UTIL.getHBaseCluster().getMaster().getAssignmentManager().getRegionStates() .getServerNode(testServer);
/** * Expire the servers which died during master's initialization. It will be * called after HMaster#assignRootAndMeta. * @throws IOException * */ synchronized void expireDeadNotExpiredServers() throws IOException { if (!services.isServerShutdownHandlerEnabled()) { throw new IOException("Master hasn't enabled ServerShutdownHandler "); } Iterator<ServerName> serverIterator = deadNotExpiredServers.iterator(); while (serverIterator.hasNext()) { expireServer(serverIterator.next()); serverIterator.remove(); } }
/** * Split a server's log and expire it if we find it is one of the online * servers. * @param sn ServerName to check. * @throws IOException */ private void splitLogAndExpireIfOnline(final ServerName sn) throws IOException { if (sn == null || !serverManager.isServerOnline(sn)) { return; } LOG.info("Forcing splitLog and expire of " + sn); fileSystemManager.splitLog(sn); serverManager.expireServer(sn); }
@Override public void nodeDeleted(String path) { if (path.startsWith(watcher.rsZNode)) { String serverName = ZKUtil.getNodeName(path); LOG.info("RegionServer ephemeral node deleted, processing expiration [" + serverName + "]"); ServerName sn = ServerName.parseServerName(serverName); if (!serverManager.isServerOnline(sn)) { LOG.warn(serverName.toString() + " is not online or isn't known to the master."+ "The latter could be caused by a DNS misconfiguration."); return; } remove(sn); this.serverManager.expireServer(sn); } }
/** * Process the servers which died during master's initialization. It will be * called after HMaster#assignMeta and AssignmentManager#joinCluster. * */ synchronized void processQueuedDeadServers() { if (!services.isServerCrashProcessingEnabled()) { LOG.info("Master hasn't enabled ServerShutdownHandler"); } Iterator<ServerName> serverIterator = queuedDeadServers.iterator(); while (serverIterator.hasNext()) { ServerName tmpServerName = serverIterator.next(); expireServer(tmpServerName); serverIterator.remove(); requeuedDeadServers.remove(tmpServerName); } if (!services.getAssignmentManager().isFailoverCleanupDone()) { LOG.info("AssignmentManager hasn't finished failover cleanup; waiting"); } for(ServerName tmpServerName : requeuedDeadServers.keySet()){ processDeadServer(tmpServerName, requeuedDeadServers.get(tmpServerName)); } requeuedDeadServers.clear(); }
@Override public void nodeDeleted(String path) { if (path.startsWith(watcher.rsZNode)) { String serverName = ZKUtil.getNodeName(path); LOG.info("RegionServer ephemeral node deleted, processing expiration [" + serverName + "]"); ServerName sn = ServerName.parseServerName(serverName); if (!serverManager.isServerOnline(sn)) { LOG.warn(serverName.toString() + " is not online or isn't known to the master."+ "The latter could be caused by a DNS misconfiguration."); return; } remove(sn); this.serverManager.expireServer(sn); } }
for (ServerName serverName: deadServers) { if (!serverManager.isServerDead(serverName)) { serverManager.expireServer(serverName); // Let SSH do region re-assign
/** * Test to see if we have a server of same host and port already. * @param serverName * @throws PleaseHoldException */ void checkAlreadySameHostPort(final ServerName serverName) throws PleaseHoldException { ServerName existingServer = ServerName.findServerWithSameHostnamePort(getOnlineServersList(), serverName); if (existingServer != null) { String message = "Server serverName=" + serverName + " rejected; we already have " + existingServer.toString() + " registered with same hostname and port"; LOG.info(message); if (existingServer.getStartcode() < serverName.getStartcode()) { LOG.info("Triggering server recovery; existingServer " + existingServer + " looks stale, new server:" + serverName); expireServer(existingServer); } if (services.isServerShutdownHandlerEnabled()) { // master has completed the initialization throw new PleaseHoldException(message); } } }
LOG.info("Triggering server recovery; existingServer " + existingServer + " looks stale, new server:" + serverName); expireServer(existingServer);
serverManager.expireServer(currentMetaServer);
serverManager.expireServer(sn);