Index: hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java (revision 1495864) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java (working copy) @@ -27,6 +27,7 @@ import org.junit.experimental.categories.Category; import java.util.List; +import java.util.Set; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -62,6 +63,10 @@ assertFalse(ds.cleanPreviousInstance(deadServer)); ds.add(deadServer); assertTrue(ds.isDeadServer(deadServer)); + Set deadServerNames =ds.copyServerNames(); + for (ServerName eachDeadServer : deadServerNames) { + Assert.assertNotNull(ds.getTimeOfDeath(eachDeadServer)); + } final ServerName deadServerHostComingAlive = new ServerName("127.0.0.1", 9090, 223341L); assertTrue(ds.cleanPreviousInstance(deadServerHostComingAlive)); Index: hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java (revision 1495864) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java (working copy) @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -160,6 +161,16 @@ Collections.sort(res, ServerNameDeathDateComparator); return res; } + + /** + * Get the time when a server died + * @param deadServerName the dead server name + * @return the date when the server died + */ + public synchronized Date getTimeOfDeath(final ServerName deadServerName){ + Long time = deadServers.get(deadServerName); + return time==null ? null : new Date(time); + } private static Comparator> ServerNameDeathDateComparator = new Comparator>(){ Index: hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon =================================================================== --- hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon (revision 1495864) +++ hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon (working copy) @@ -42,6 +42,7 @@ org.apache.hadoop.hbase.HTableDescriptor; org.apache.hadoop.hbase.HBaseConfiguration; org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription; +org.apache.hadoop.hbase.master.DeadServer; <%if format.equals("json") %> <& ../common/TaskMonitorTmpl; filter = filter; format = "json" &> @@ -329,17 +330,21 @@

Dead Region Servers

- + + <%java> + DeadServer deadServerUtil = master.getServerManager().getDeadServers(); ServerName [] deadServerNames = deadServers.toArray(new ServerName[deadServers.size()]); Arrays.sort(deadServerNames); for (ServerName deadServerName: deadServerNames) { int infoPort = master.getConfiguration().getInt("hbase.regionserver.info.port", 60030); + + <%java> } @@ -347,6 +352,7 @@ +
ServerNameStop time
<% deadServerName %><% deadServerUtil.getTimeOfDeath(deadServerName) %>
Total: servers: <% deadServers.size() %>