diff --git a/src/java/org/apache/hadoop/hbase/master/ServerManager.java b/src/java/org/apache/hadoop/hbase/master/ServerManager.java index d00a395..90e0797 100644 --- a/src/java/org/apache/hadoop/hbase/master/ServerManager.java +++ b/src/java/org/apache/hadoop/hbase/master/ServerManager.java @@ -123,7 +123,7 @@ class ServerManager implements HConstants { deadServers.contains(serverName)) { throw new Leases.LeaseStillHeldException(serverName); } - Watcher watcher = new ServerExpirer(serverName); + Watcher watcher = new ServerExpirer(serverName, info.getServerAddress().toString()); zooKeeperWrapper.updateRSLocationGetWatch(info, watcher); LOG.info("Received start message from: " + serverName); @@ -140,7 +140,7 @@ class ServerManager implements HConstants { } } } - HServerInfo storedInfo = serversToServerInfo.remove(serverName); + HServerInfo storedInfo = serversToServerInfo.remove(info.getServerAddress().toString()); if (storedInfo != null && !master.closed.get()) { // The startup message was from a known server with the same name. // Timeout the old one right away. @@ -160,7 +160,7 @@ class ServerManager implements HConstants { // record new server load = new HServerLoad(); info.setLoad(load); - serversToServerInfo.put(serverName, info); + serversToServerInfo.put(info.getServerAddress().toString(), info); serversToLoad.put(serverName, load); synchronized (loadToServers) { Set servers = loadToServers.get(load); @@ -229,7 +229,7 @@ class ServerManager implements HConstants { return new HMsg [] {REGIONSERVER_STOP}; } - HServerInfo storedInfo = serversToServerInfo.get(info.getServerName()); + HServerInfo storedInfo = serversToServerInfo.get(info.getServerAddress().toString()); if (storedInfo == null) { if (LOG.isDebugEnabled()) { LOG.debug("received server report from unknown server: " + @@ -255,7 +255,7 @@ class ServerManager implements HConstants { } synchronized (serversToServerInfo) { - removeServerInfo(info.getServerName()); + removeServerInfo(info.getServerName(), info.getServerAddress().toString()); serversToServerInfo.notifyAll(); } @@ -270,7 +270,8 @@ class ServerManager implements HConstants { synchronized (serversToServerInfo) { try { // HRegionServer is shutting down. - if (removeServerInfo(serverInfo.getServerName())) { + if (removeServerInfo(serverInfo.getServerName(), + serverInfo.getServerAddress().toString())) { // Only process the exit message if the server still has registered info. // Otherwise we could end up processing the server exit twice. LOG.info("Region server " + serverInfo.getServerName() + @@ -320,7 +321,7 @@ class ServerManager implements HConstants { throws IOException { // Refresh the info object and the load information - serversToServerInfo.put(serverInfo.getServerName(), serverInfo); + serversToServerInfo.put(serverInfo.getServerAddress().toString(), serverInfo); HServerLoad load = serversToLoad.get(serverInfo.getServerName()); if (load != null) { @@ -567,9 +568,10 @@ class ServerManager implements HConstants { } /** Update a server load information because it's shutting down*/ - private boolean removeServerInfo(final String serverName) { + private boolean removeServerInfo(final String serverName, + final String serverHostPort) { boolean infoUpdated = false; - HServerInfo info = serversToServerInfo.remove(serverName); + HServerInfo info = serversToServerInfo.remove(serverHostPort); // Only update load information once. // This method can be called a couple of times during shutdown. if (info != null) { @@ -629,11 +631,11 @@ class ServerManager implements HConstants { } /** - * @param name server name + * @param hostport server name format host:port * @return HServerInfo for the given server address */ - public HServerInfo getServerInfo(String name) { - return serversToServerInfo.get(name); + public HServerInfo getServerInfo(String hostport) { + return serversToServerInfo.get(hostport); } /** @@ -691,16 +693,18 @@ class ServerManager implements HConstants { /** Watcher triggered when a RS znode is deleted */ private class ServerExpirer implements Watcher { private String server; + private String serverHostPort; - ServerExpirer(String server) { + ServerExpirer(String server, String serverHostPort) { this.server = server; + this.serverHostPort = serverHostPort; } public void process(WatchedEvent event) { if(event.getType().equals(EventType.NodeDeleted)) { LOG.info(server + " znode expired"); // Remove the server from the known servers list and update load info - HServerInfo info = serversToServerInfo.remove(server); + HServerInfo info = serversToServerInfo.remove(serverHostPort); boolean rootServer = false; if (info != null) { HServerAddress root = master.getRootRegionLocation(); diff --git a/src/webapps/master/table.jsp b/src/webapps/master/table.jsp index 1edefea..fef6111 100644 --- a/src/webapps/master/table.jsp +++ b/src/webapps/master/table.jsp @@ -32,9 +32,9 @@ <% -String action = request.getParameter("action"); -String key = request.getParameter("key"); -if ( action != null ) { + String action = request.getParameter("action"); + String key = request.getParameter("key"); + if ( action != null ) { %> @@ -80,49 +80,76 @@ if ( action != null ) {

Table: <%= tableName %>


-<%if(tableName.equals(Bytes.toString(HConstants.ROOT_TABLE_NAME))) {%> +<% + if(tableName.equals(Bytes.toString(HConstants.ROOT_TABLE_NAME))) { +%> <%= tableHeader %> -<% int infoPort = serverToServerInfos.get(rootLocation.getBindAddress()+":"+rootLocation.getPort()).getInfoPort(); - String url = "http://" + rootLocation.getHostname() + ":" + infoPort + "/";%> -<%= tableName %><%= rootLocation.getHostname() %>:<%= rootLocation.getPort() %>-- +<% + int infoPort = serverToServerInfos.get(rootLocation.toString()).getInfoPort(); + String url = "http://" + rootLocation.getHostname() + ":" + infoPort + "/"; +%> + + <%= tableName %> + <%= rootLocation.getHostname() %>:<%= rootLocation.getPort() %> + - + + - + -<%} else if(tableName.equals(Bytes.toString(HConstants.META_TABLE_NAME))) { %> +<% + } else if(tableName.equals(Bytes.toString(HConstants.META_TABLE_NAME))) { +%> <%= tableHeader %> -<% Map onlineRegions = master.getOnlineMetaRegions(); - for (MetaRegion meta: onlineRegions.values()) { - int infoPort = serverToServerInfos.get(meta.getServer().getBindAddress()+":"+meta.getServer().getPort()).getInfoPort(); - String url = "http://" + meta.getServer().getHostname() + ":" + infoPort + "/";%> -<%= Bytes.toString(meta.getRegionName()) %> - <%= meta.getServer().getHostname() %>:<%= meta.getServer().getPort() %> - -<%= Bytes.toString(meta.getStartKey()) %>- +<% + Map onlineRegions = master.getOnlineMetaRegions(); + for (MetaRegion meta: onlineRegions.values()) { + int infoPort = serverToServerInfos.get(meta.getServer().toString()).getInfoPort(); + String url = "http://" + meta.getServer().getHostname() + ":" + infoPort + "/"; +%> + + <%= Bytes.toString(meta.getRegionName()) %> + <%= meta.getServer().toString() %> + -<%= Bytes.toString(meta.getStartKey()) %>- + <% } %> <%} else { - try { %> + try { %>

Table Attributes

- - + +
Attribute NameValueDescription
Enabled<%= hbadmin.isTableEnabled(table.getTableName()) %>Is the table enabled
Attribute NameValueDescription
Enabled<%= hbadmin.isTableEnabled(table.getTableName()) %>Is the table enabled
-<% Map regions = table.getRegionsInfo(); - if(regions != null && regions.size() > 0) { %> +<% + Map regions = table.getRegionsInfo(); + if(regions != null && regions.size() > 0) { %> <%= tableHeader %> -<% for(Map.Entry hriEntry : regions.entrySet()) { %> -<% int infoPort = serverToServerInfos.get(hriEntry.getValue().getBindAddress()+":"+hriEntry.getValue().getPort()).getInfoPort(); - String urlRegionHistorian = "/regionhistorian.jsp?regionname="+hriEntry.getKey().getRegionNameAsString(); - String urlRegionServer = "http://" + hriEntry.getValue().getHostname().toString() + ":" + infoPort + "/"; %> -<%= hriEntry.getKey().getRegionNameAsString()%> - <%= hriEntry.getValue().getHostname() %>:<%= hriEntry.getValue().getPort() %> - <%= hriEntry.getKey().getEncodedName()%> <%= Bytes.toString(hriEntry.getKey().getStartKey())%> - <%= Bytes.toString(hriEntry.getKey().getEndKey())%> -<% } %> +<% + for(Map.Entry hriEntry : regions.entrySet()) { + + int infoPort = serverToServerInfos.get( + hriEntry.getValue().toString()).getInfoPort(); + + String urlRegionHistorian = + "/regionhistorian.jsp?regionname="+hriEntry.getKey().getRegionNameAsString(); + + String urlRegionServer = + "http://" + hriEntry.getValue().getHostname().toString() + ":" + infoPort + "/"; +%> + + <%= hriEntry.getKey().getRegionNameAsString()%> + <%= hriEntry.getValue().toString() %> + <%= hriEntry.getKey().getEncodedName()%> <%= Bytes.toString(hriEntry.getKey().getStartKey())%> + <%= Bytes.toString(hriEntry.getKey().getEndKey())%> + +<% } %> -<% } - } - catch(Exception ex) { - ex.printStackTrace(); - } - }%> +<% } +} catch(Exception ex) { + ex.printStackTrace(); +} +} // end else +%>


Actions: