You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2013/03/18 20:38:19 UTC
svn commit: r1457934 - in
/hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master:
DeadServer.java ServerManager.java handler/MetaServerShutdownHandler.java
Author: tedyu
Date: Mon Mar 18 19:38:18 2013
New Revision: 1457934
URL: http://svn.apache.org/r1457934
Log:
HBASE-8097 MetaServerShutdownHandler may potentially keep bumping up DeadServer.numProcessing (Jeffrey Zhong)
Modified:
hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java
hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/MetaServerShutdownHandler.java
Modified: hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java?rev=1457934&r1=1457933&r2=1457934&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java (original)
+++ hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java Mon Mar 18 19:38:18 2013
@@ -98,9 +98,15 @@ public class DeadServer {
return clone;
}
- public synchronized boolean add(ServerName e) {
+ /**
+ * Adds the server to the dead server list if it's not there already.
+ * @param sn the server name
+ */
+ public synchronized void add(ServerName sn) {
this.numProcessing++;
- return deadServers.put(e, EnvironmentEdgeManager.currentTimeMillis()) != null;
+ if (!deadServers.containsKey(sn)){
+ deadServers.put(sn, EnvironmentEdgeManager.currentTimeMillis());
+ }
}
@SuppressWarnings("UnusedParameters")
Modified: hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java?rev=1457934&r1=1457933&r2=1457934&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (original)
+++ hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java Mon Mar 18 19:38:18 2013
@@ -487,7 +487,7 @@ public class ServerManager {
boolean carryingMeta = services.getAssignmentManager().isCarryingMeta(serverName);
if (carryingMeta) {
this.services.getExecutorService().submit(new MetaServerShutdownHandler(this.master,
- this.services, this.deadservers, serverName, carryingMeta));
+ this.services, this.deadservers, serverName));
} else {
this.services.getExecutorService().submit(new ServerShutdownHandler(this.master,
this.services, this.deadservers, serverName, true));
Modified: hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/MetaServerShutdownHandler.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/MetaServerShutdownHandler.java?rev=1457934&r1=1457933&r2=1457934&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/MetaServerShutdownHandler.java (original)
+++ hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/MetaServerShutdownHandler.java Mon Mar 18 19:38:18 2013
@@ -32,49 +32,51 @@ import org.apache.hadoop.hbase.master.Ma
import org.apache.zookeeper.KeeperException;
/**
- * Shutdown handler for the server hosting <code>-ROOT-</code>,
- * <code>.META.</code>, or both.
+ * Shutdown handler for the server hosting <code>.META.</code>
*/
@InterfaceAudience.Private
public class MetaServerShutdownHandler extends ServerShutdownHandler {
- private final boolean carryingMeta;
private static final Log LOG = LogFactory.getLog(MetaServerShutdownHandler.class);
public MetaServerShutdownHandler(final Server server,
final MasterServices services,
- final DeadServer deadServers, final ServerName serverName,
- final boolean carryingMeta) {
+ final DeadServer deadServers, final ServerName serverName) {
super(server, services, deadServers, serverName,
EventType.M_META_SERVER_SHUTDOWN, true);
- this.carryingMeta = carryingMeta;
}
@Override
public void process() throws IOException {
- try {
- LOG.info("Splitting META logs for " + serverName);
- if (this.shouldSplitHlog) {
- this.services.getMasterFileSystem().splitMetaLog(serverName);
+ boolean gotException = true;
+ try{
+ try {
+ LOG.info("Splitting META logs for " + serverName);
+ if (this.shouldSplitHlog) {
+ this.services.getMasterFileSystem().splitMetaLog(serverName);
+ }
+ } catch (IOException ioe) {
+ this.services.getExecutorService().submit(this);
+ this.deadServers.add(serverName);
+ throw new IOException("failed log splitting for " +
+ serverName + ", will retry", ioe);
}
- } catch (IOException ioe) {
- this.services.getExecutorService().submit(this);
- this.deadServers.add(serverName);
- throw new IOException("failed log splitting for " +
- serverName + ", will retry", ioe);
- }
-
- // Assign root and meta if we were carrying them.
- if (isCarryingMeta()) { // .META.
+
+ // Assign meta if we were carrying it.
// Check again: region may be assigned to other where because of RIT
// timeout
if (this.services.getAssignmentManager().isCarryingMeta(serverName)) {
- LOG.info("Server " + serverName
- + " was carrying META. Trying to assign.");
- this.services.getAssignmentManager().regionOffline(
- HRegionInfo.FIRST_META_REGIONINFO);
+ LOG.info("Server " + serverName + " was carrying META. Trying to assign.");
+ this.services.getAssignmentManager().regionOffline(HRegionInfo.FIRST_META_REGIONINFO);
verifyAndAssignMetaWithRetries();
} else {
LOG.info("META has been assigned to otherwhere, skip assigning.");
}
+
+ gotException = false;
+ } finally {
+ if (gotException){
+ // If we had an exception, this.deadServers.finish will be skipped in super.process()
+ this.deadServers.finish(serverName);
+ }
}
super.process();
}
@@ -97,10 +99,10 @@ public class MetaServerShutdownHandler e
if (!this.server.getCatalogTracker().verifyMetaRegionLocation(timeout)) {
this.services.getAssignmentManager().assignMeta();
} else if (serverName.equals(server.getCatalogTracker().getMetaLocation())) {
- throw new IOException("-ROOT- is onlined on the dead server "
+ throw new IOException(".META. is onlined on the dead server "
+ serverName);
} else {
- LOG.info("Skip assigning -ROOT-, because it is online on the "
+ LOG.info("Skip assigning .META., because it is online on the "
+ server.getCatalogTracker().getMetaLocation());
}
}
@@ -142,10 +144,6 @@ public class MetaServerShutdownHandler e
}
}
- boolean isCarryingMeta() {
- return this.carryingMeta;
- }
-
@Override
public String toString() {
String name = "UnknownServerName";