You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by nk...@apache.org on 2013/07/01 09:48:22 UTC
svn commit: r1498276 - in /hbase/branches/0.95/hbase-server/src:
main/jamon/org/apache/hadoop/hbase/tmpl/master/
main/java/org/apache/hadoop/hbase/master/
test/java/org/apache/hadoop/hbase/master/
Author: nkeywal
Date: Mon Jul 1 07:48:22 2013
New Revision: 1498276
URL: http://svn.apache.org/r1498276
Log:
HBASE-4360 Maintain information on the time a RS went dead (samar)
Modified:
hbase/branches/0.95/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/master/DeadServer.java
hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java
hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterStatusServlet.java
Modified: hbase/branches/0.95/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon?rev=1498276&r1=1498275&r2=1498276&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon (original)
+++ hbase/branches/0.95/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon Mon Jul 1 07:48:22 2013
@@ -46,6 +46,7 @@ org.apache.hadoop.hbase.client.HConnecti
org.apache.hadoop.hbase.HTableDescriptor;
org.apache.hadoop.hbase.HBaseConfiguration;
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription;
+org.apache.hadoop.hbase.master.DeadServer;
</%import>
<%if format.equals("json") %>
<& ../common/TaskMonitorTmpl; filter = filter; format = "json" &>
@@ -346,17 +347,21 @@ AssignmentManager assignmentManager = ma
<h2>Dead Region Servers</h2>
<table class="table table-striped">
<tr>
- <th rowspan="<% deadServers.size() + 1%>"></th>
+ <th></th>
<th>ServerName</th>
+ <th>Stop time</th>
</tr>
<%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>
<tr>
+ <th rowspan="<% deadServers.size() %>"></th>
<td><% deadServerName %></td>
+ <td><% deadServerUtil.getTimeOfDeath(deadServerName) %></td>
</tr>
<%java>
}
@@ -364,6 +369,7 @@ AssignmentManager assignmentManager = ma
<tr>
<th>Total: </th>
<td>servers: <% deadServers.size() %></td>
+ <th></th>
</tr>
</table>
</%if>
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=1498276&r1=1498275&r2=1498276&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 Jul 1 07:48:22 2013
@@ -26,6 +26,7 @@ import org.apache.hadoop.hbase.util.Pair
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 @@ public class DeadServer {
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<Pair<ServerName, Long>> ServerNameDeathDateComparator =
new Comparator<Pair<ServerName, Long>>(){
Modified: hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java?rev=1498276&r1=1498275&r2=1498276&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java (original)
+++ hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java Mon Jul 1 07:48:22 2013
@@ -27,6 +27,7 @@ import org.junit.Test;
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 @@ public class TestDeadServer {
assertFalse(ds.cleanPreviousInstance(deadServer));
ds.add(deadServer);
assertTrue(ds.isDeadServer(deadServer));
+ Set<ServerName> 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));
Modified: hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterStatusServlet.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterStatusServlet.java?rev=1498276&r1=1498275&r2=1498276&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterStatusServlet.java (original)
+++ hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterStatusServlet.java Mon Jul 1 07:48:22 2013
@@ -70,10 +70,13 @@ public class TestMasterStatusServlet {
Mockito.doReturn(FAKE_HOST).when(master).getServerName();
Mockito.doReturn(conf).when(master).getConfiguration();
+ //Fake DeadServer
+ DeadServer deadServer = Mockito.mock(DeadServer.class);
// Fake serverManager
ServerManager serverManager = Mockito.mock(ServerManager.class);
Mockito.doReturn(1.0).when(serverManager).getAverageLoad();
Mockito.doReturn(serverManager).when(master).getServerManager();
+ Mockito.doReturn(deadServer).when(serverManager).getDeadServers();
// Fake AssignmentManager and RIT
AssignmentManager am = Mockito.mock(AssignmentManager.class);
@@ -85,6 +88,7 @@ public class TestMasterStatusServlet {
Mockito.doReturn(rs).when(am).getRegionStates();
Mockito.doReturn(regionsInTransition).when(rs).getRegionsInTransition();
Mockito.doReturn(am).when(master).getAssignmentManager();
+ Mockito.doReturn(serverManager).when(master).getServerManager();
// Fake ZKW
ZooKeeperWatcher zkw = Mockito.mock(ZooKeeperWatcher.class);