You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2011/04/28 01:12:44 UTC

svn commit: r1097275 [7/8] - in /hbase/trunk: ./ src/docbkx/ src/main/java/org/apache/hadoop/hbase/ src/main/java/org/apache/hadoop/hbase/avro/ src/main/java/org/apache/hadoop/hbase/catalog/ src/main/java/org/apache/hadoop/hbase/client/ src/main/java/o...

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/RootRegionTracker.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/RootRegionTracker.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/RootRegionTracker.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/RootRegionTracker.java Wed Apr 27 23:12:42 2011
@@ -20,9 +20,8 @@
 package org.apache.hadoop.hbase.zookeeper;
 
 import org.apache.hadoop.hbase.Abortable;
-import org.apache.hadoop.hbase.HServerAddress;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.catalog.RootLocationEditor;
-import org.apache.hadoop.hbase.regionserver.RegionServerServices;
 import org.apache.hadoop.hbase.util.Bytes;
 
 /**
@@ -54,31 +53,34 @@ public class RootRegionTracker extends Z
 
   /**
    * Gets the root region location, if available.  Null if not.  Does not block.
-   * @return server address for server hosting root region, null if none available
+   * @return server name
    * @throws InterruptedException 
    */
-  public HServerAddress getRootRegionLocation() throws InterruptedException {
-    return dataToHServerAddress(super.getData());
+  public ServerName getRootRegionLocation() throws InterruptedException {
+    byte [] data = super.getData();
+    return data == null? null: new ServerName(dataToString(data));
   }
 
   /**
    * Gets the root region location, if available, and waits for up to the
    * specified timeout if not immediately available.
    * @param timeout maximum time to wait, in millis
-   * @return server address for server hosting root region, null if timed out
+   * @return server name for server hosting root region formatted as per
+   * {@link ServerName}, or null if none available
    * @throws InterruptedException if interrupted while waiting
    */
-  public HServerAddress waitRootRegionLocation(long timeout)
+  public ServerName waitRootRegionLocation(long timeout)
   throws InterruptedException {
-    return dataToHServerAddress(super.blockUntilAvailable(timeout));
+    String str = dataToString(super.blockUntilAvailable(timeout));
+    return str == null? null: new ServerName(str);
   }
 
   /*
    * @param data
    * @return Returns null if <code>data</code> is null else converts passed data
-   * to an HServerAddress instance.
+   * to a String instance.
    */
-  private static HServerAddress dataToHServerAddress(final byte [] data) {
-    return data == null ? null: new HServerAddress(Bytes.toString(data));
+  private static String dataToString(final byte [] data) {
+    return data == null ? null: Bytes.toString(data);
   }
-}
+}
\ No newline at end of file

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKAssign.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKAssign.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKAssign.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKAssign.java Wed Apr 27 23:12:42 2011
@@ -24,6 +24,7 @@ import java.util.List;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.executor.RegionTransitionData;
 import org.apache.hadoop.hbase.executor.EventHandler.EventType;
 import org.apache.zookeeper.AsyncCallback;
@@ -130,13 +131,13 @@ public class ZKAssign {
    * @throws KeeperException.NodeExistsException if node already exists
    */
   public static void createNodeOffline(ZooKeeperWatcher zkw, HRegionInfo region,
-      String serverName)
+      ServerName serverName)
   throws KeeperException, KeeperException.NodeExistsException {
     createNodeOffline(zkw, region, serverName, EventType.M_ZK_REGION_OFFLINE);
   }
 
   public static void createNodeOffline(ZooKeeperWatcher zkw, HRegionInfo region,
-      String serverName, final EventType event)
+      ServerName serverName, final EventType event)
   throws KeeperException, KeeperException.NodeExistsException {
     LOG.debug(zkw.prefix("Creating unassigned node for " +
       region.getEncodedName() + " in OFFLINE state"));
@@ -165,7 +166,7 @@ public class ZKAssign {
    * @throws KeeperException.NodeExistsException if node already exists
    */
   public static void asyncCreateNodeOffline(ZooKeeperWatcher zkw,
-      HRegionInfo region, String serverName,
+      HRegionInfo region, ServerName serverName,
       final AsyncCallback.StringCallback cb, final Object ctx)
   throws KeeperException {
     LOG.debug(zkw.prefix("Async create of unassigned node for " +
@@ -198,7 +199,7 @@ public class ZKAssign {
    * @throws KeeperException.NoNodeException if node does not exist
    */
   public static void forceNodeOffline(ZooKeeperWatcher zkw, HRegionInfo region,
-      String serverName)
+      ServerName serverName)
   throws KeeperException, KeeperException.NoNodeException {
     LOG.debug(zkw.prefix("Forcing existing unassigned node for " +
       region.getEncodedName() + " to OFFLINE state"));
@@ -231,7 +232,7 @@ public class ZKAssign {
    * @throws KeeperException.NodeExistsException if node already exists
    */
   public static boolean createOrForceNodeOffline(ZooKeeperWatcher zkw,
-      HRegionInfo region, String serverName)
+      HRegionInfo region, ServerName serverName)
   throws KeeperException {
     LOG.debug(zkw.prefix("Creating (or updating) unassigned node for " +
       region.getEncodedName() + " with OFFLINE state"));
@@ -464,7 +465,7 @@ public class ZKAssign {
    * @throws KeeperException.NodeExistsException if node already exists
    */
   public static int createNodeClosing(ZooKeeperWatcher zkw, HRegionInfo region,
-      String serverName)
+      ServerName serverName)
   throws KeeperException, KeeperException.NodeExistsException {
     LOG.debug(zkw.prefix("Creating unassigned node for " +
       region.getEncodedName() + " in a CLOSING state"));
@@ -506,7 +507,7 @@ public class ZKAssign {
    * @throws KeeperException if unexpected zookeeper exception
    */
   public static int transitionNodeClosed(ZooKeeperWatcher zkw,
-      HRegionInfo region, String serverName, int expectedVersion)
+      HRegionInfo region, ServerName serverName, int expectedVersion)
   throws KeeperException {
     return transitionNode(zkw, region, serverName,
         EventType.RS_ZK_REGION_CLOSING,
@@ -540,14 +541,14 @@ public class ZKAssign {
    * @throws KeeperException if unexpected zookeeper exception
    */
   public static int transitionNodeOpening(ZooKeeperWatcher zkw,
-      HRegionInfo region, String serverName)
+      HRegionInfo region, ServerName serverName)
   throws KeeperException {
     return transitionNodeOpening(zkw, region, serverName,
       EventType.M_ZK_REGION_OFFLINE);
   }
 
   public static int transitionNodeOpening(ZooKeeperWatcher zkw,
-      HRegionInfo region, String serverName, final EventType beginState)
+      HRegionInfo region, ServerName serverName, final EventType beginState)
   throws KeeperException {
     return transitionNode(zkw, region, serverName, beginState,
       EventType.RS_ZK_REGION_OPENING, -1);
@@ -580,7 +581,7 @@ public class ZKAssign {
    * @throws KeeperException if unexpected zookeeper exception
    */
   public static int retransitionNodeOpening(ZooKeeperWatcher zkw,
-      HRegionInfo region, String serverName, int expectedVersion)
+      HRegionInfo region, ServerName serverName, int expectedVersion)
   throws KeeperException {
     return transitionNode(zkw, region, serverName,
         EventType.RS_ZK_REGION_OPENING,
@@ -616,7 +617,7 @@ public class ZKAssign {
    * @throws KeeperException if unexpected zookeeper exception
    */
   public static int transitionNodeOpened(ZooKeeperWatcher zkw,
-      HRegionInfo region, String serverName, int expectedVersion)
+      HRegionInfo region, ServerName serverName, int expectedVersion)
   throws KeeperException {
     return transitionNode(zkw, region, serverName,
         EventType.RS_ZK_REGION_OPENING,
@@ -652,7 +653,7 @@ public class ZKAssign {
    * @throws KeeperException if unexpected zookeeper exception
    */
   public static int transitionNode(ZooKeeperWatcher zkw, HRegionInfo region,
-      String serverName, EventType beginState, EventType endState,
+      ServerName serverName, EventType beginState, EventType endState,
       int expectedVersion)
   throws KeeperException {
     return transitionNode(zkw, region, serverName, beginState, endState,
@@ -660,7 +661,7 @@ public class ZKAssign {
   }
 
   public static int transitionNode(ZooKeeperWatcher zkw, HRegionInfo region,
-      String serverName, EventType beginState, EventType endState,
+      ServerName serverName, EventType beginState, EventType endState,
       int expectedVersion, final byte [] payload)
   throws KeeperException {
     String encoded = region.getEncodedName();
@@ -699,7 +700,7 @@ public class ZKAssign {
         "unassigned node for " + encoded +
         " from " + beginState + " to " + endState + " failed, " +
         "the node existed but was in the state " + existingData.getEventType() +
-        " set by the server " + existingData.getServerName()));
+        " set by the server " + serverName));
       return -1;
     }
 

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKUtil.java Wed Apr 27 23:12:42 2011
@@ -33,8 +33,6 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HServerAddress;
-import org.apache.hadoop.hbase.HServerInfo;
 import org.apache.hadoop.hbase.executor.RegionTransitionData;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.zookeeper.AsyncCallback;
@@ -126,19 +124,6 @@ public class ZKUtil {
   }
 
   /**
-   * Get the unique node-name for the specified regionserver.
-   *
-   * Used when a server puts up an ephemeral node for itself and needs to use
-   * a unique name.
-   *
-   * @param serverInfo server information
-   * @return unique, zookeeper-safe znode path for the server instance
-   */
-  public static String getNodeName(HServerInfo serverInfo) {
-    return serverInfo.getServerName();
-  }
-
-  /**
    * Get the name of the current node from the specified fully-qualified path.
    * @param path fully-qualified path
    * @return name of the current node
@@ -333,38 +318,6 @@ public class ZKUtil {
   }
 
   /**
-   * Lists the children of the specified znode, retrieving the data of each
-   * child as a server address.
-   *
-   * Used to list the currently online regionservers and their addresses.
-   *
-   * Sets no watches at all, this method is best effort.
-   *
-   * Returns an empty list if the node has no children.  Returns null if the
-   * parent node itself does not exist.
-   *
-   * @param zkw zookeeper reference
-   * @param znode node to get children of as addresses
-   * @return list of data of children of specified znode, empty if no children,
-   *         null if parent does not exist
-   * @throws KeeperException if unexpected zookeeper exception
-   */
-  public static List<HServerAddress> listChildrenAndGetAsAddresses(
-      ZooKeeperWatcher zkw, String znode)
-  throws KeeperException {
-    List<String> children = listChildrenNoWatch(zkw, znode);
-    if(children == null) {
-      return null;
-    }
-    List<HServerAddress> addresses =
-      new ArrayList<HServerAddress>(children.size());
-    for(String child : children) {
-      addresses.add(getDataAsAddress(zkw, joinZNode(znode, child)));
-    }
-    return addresses;
-  }
-
-  /**
    * Lists the children of the specified znode without setting any watches.
    *
    * Used to list the currently online regionservers and their addresses.
@@ -602,32 +555,6 @@ public class ZKUtil {
   }
 
   /**
-   * Get the data at the specified znode, deserialize it as an HServerAddress,
-   * and set a watch.
-   *
-   * Returns the data as a server address and sets a watch if the node exists.
-   * Returns null and no watch is set if the node does not exist or there is an
-   * exception.
-   *
-   * @param zkw zk reference
-   * @param znode path of node
-   * @return data of the specified node as a server address, or null
-   * @throws KeeperException if unexpected zookeeper exception
-   */
-  public static HServerAddress getDataAsAddress(ZooKeeperWatcher zkw,
-      String znode)
-  throws KeeperException {
-    byte [] data = getDataAndWatch(zkw, znode);
-    if(data == null) {
-      return null;
-    }
-    String addrString = Bytes.toString(data);
-    LOG.debug(zkw.prefix("Read server address from znode " + znode + ": " +
-      addrString));
-    return new HServerAddress(addrString);
-  }
-
-  /**
    * Update the data of an existing node with the expected version to have the
    * specified data.
    *
@@ -657,31 +584,6 @@ public class ZKUtil {
   //
 
   /**
-   * Set the specified znode to be an ephemeral node carrying the specified
-   * server address.  Used by masters for their ephemeral node and regionservers
-   * for their ephemeral node.
-   *
-   * If the node is created successfully, a watcher is also set on the node.
-   *
-   * If the node is not created successfully because it already exists, this
-   * method will also set a watcher on the node.
-   *
-   * If there is another problem, a KeeperException will be thrown.
-   *
-   * @param zkw zk reference
-   * @param znode path of node
-   * @param address server address
-   * @return true if address set, false if not, watch set in both cases
-   * @throws KeeperException if unexpected zookeeper exception
-   */
-  public static boolean setAddressAndWatch(ZooKeeperWatcher zkw,
-      String znode, HServerAddress address)
-  throws KeeperException {
-    return createEphemeralNodeAndWatch(zkw, znode,
-        Bytes.toBytes(address.toString()));
-  }
-
-  /**
    * Sets the data of the existing znode to be the specified data.  Ensures that
    * the current data has the specified expected version.
    *
@@ -745,8 +647,7 @@ public class ZKUtil {
    * @param data data to set for node
    * @throws KeeperException if unexpected zookeeper exception
    */
-  public static void setData(ZooKeeperWatcher zkw, String znode,
-      byte [] data)
+  public static void setData(ZooKeeperWatcher zkw, String znode, byte [] data)
   throws KeeperException, KeeperException.NoNodeException {
     setData(zkw, znode, data, -1);
   }
@@ -1024,10 +925,9 @@ public class ZKUtil {
   public static void deleteChildrenRecursively(ZooKeeperWatcher zkw, String node)
   throws KeeperException {
     List<String> children = ZKUtil.listChildrenNoWatch(zkw, node);
-    if(children != null || !children.isEmpty()) {
-      for(String child : children) {
-        deleteNodeRecursively(zkw, joinZNode(node, child));
-      }
+    if (children == null || children.isEmpty()) return;
+    for(String child : children) {
+      deleteNodeRecursively(zkw, joinZNode(node, child));
     }
   }
 
@@ -1041,13 +941,12 @@ public class ZKUtil {
     try {
       sb.append("HBase is rooted at ").append(zkw.baseZNode);
       sb.append("\nMaster address: ").append(
-          getDataAsAddress(zkw, zkw.masterAddressZNode));
+        Bytes.toStringBinary(getData(zkw, zkw.masterAddressZNode)));
       sb.append("\nRegion server holding ROOT: ").append(
-          getDataAsAddress(zkw, zkw.rootServerZNode));
+        Bytes.toStringBinary(getData(zkw, zkw.rootServerZNode)));
       sb.append("\nRegion servers:");
-      for (HServerAddress address : listChildrenAndGetAsAddresses(zkw,
-          zkw.rsZNode)) {
-        sb.append("\n ").append(address);
+      for (String child: listChildrenNoWatch(zkw, zkw.rsZNode)) {
+        sb.append("\n ").append(child);
       }
       sb.append("\nQuorum Server Statistics:");
       String[] servers = zkw.getQuorum().split(",");

Modified: hbase/trunk/src/main/resources/hbase-webapps/master/master.jsp
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/resources/hbase-webapps/master/master.jsp?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/main/resources/hbase-webapps/master/master.jsp (original)
+++ hbase/trunk/src/main/resources/hbase-webapps/master/master.jsp Wed Apr 27 23:12:42 2011
@@ -7,17 +7,15 @@
   import="org.apache.hadoop.hbase.util.FSUtils"
   import="org.apache.hadoop.hbase.master.HMaster"
   import="org.apache.hadoop.hbase.HConstants"
+  import="org.apache.hadoop.hbase.ServerName"
   import="org.apache.hadoop.hbase.client.HBaseAdmin"
   import="org.apache.hadoop.hbase.client.HConnectionManager"
-  import="org.apache.hadoop.hbase.HServerInfo"
-  import="org.apache.hadoop.hbase.HServerAddress"
   import="org.apache.hadoop.hbase.HTableDescriptor" %><%
   HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
   Configuration conf = master.getConfiguration();
-  HServerAddress rootLocation = master.getCatalogTracker().getRootLocation();
+  ServerName rootLocation = master.getCatalogTracker().getRootLocation();
   boolean metaOnline = master.getCatalogTracker().getMetaLocation() != null;
-  Map<String, HServerInfo> serverToServerInfos =
-    master.getServerManager().getOnlineServers();
+  List<ServerName> servers = master.getServerManager().getOnlineServersList();
   int interval = conf.getInt("hbase.regionserver.msginterval", 1000)/1000;
   if (interval == 0) {
       interval = 1;
@@ -32,12 +30,12 @@
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
-<title>HBase Master: <%= master.getMasterAddress().getHostname()%>:<%= master.getMasterAddress().getPort() %></title>
+<title>HBase Master: <%= master.getServerName().getHostAndPort() %></title>
 <link rel="stylesheet" type="text/css" href="/static/hbase.css" />
 </head>
 <body>
 <a id="logo" href="http://wiki.apache.org/lucene-hadoop/Hbase"><img src="/static/hbase_logo_med.gif" alt="HBase Logo" title="HBase Logo" /></a>
-<h1 id="page_title">Master: <%=master.getMasterAddress().getHostname()%>:<%=master.getMasterAddress().getPort()%></h1>
+<h1 id="page_title">Master: <%=master.getServerName().getHostname()%>:<%=master.getServerName().getPort()%></h1>
 <p id="links_menu"><a href="/logs/">Local logs</a>, <a href="/stacks">Thread Dump</a>, <a href="/logLevel">Log Level</a></p>
 
 <!-- Various warnings that cluster admins should be aware of -->
@@ -137,26 +135,27 @@
 <% } %>
 
 <h2>Region Servers</h2>
-<% if (serverToServerInfos != null && serverToServerInfos.size() > 0) { %>
+<% if (servers != null && servers.size() > 0) { %>
 <%   int totalRegions = 0;
      int totalRequests = 0; 
 %>
 
 <table>
-<tr><th rowspan="<%= serverToServerInfos.size() + 1%>"></th><th>Address</th><th>Start Code</th><th>Load</th></tr>
-<%   String[] serverNames = serverToServerInfos.keySet().toArray(new String[serverToServerInfos.size()]);
+<tr><th rowspan="<%= servers.size() + 1%>"></th><th>Address</th><th>Start Code</th><th>Load</th></tr>
+<%   ServerName [] serverNames = servers.toArray(new ServerName[servers.size()]);
      Arrays.sort(serverNames);
-     for (String serverName: serverNames) {
-       HServerInfo hsi = serverToServerInfos.get(serverName);
-       String hostname = hsi.getServerAddress().getHostname() + ":" + hsi.getInfoPort();
+     for (ServerName serverName: serverNames) {
+       // HARDCODED FOR NOW; FIX -- READ FROM ZK
+       String hostname = serverName.getHostname() + ":60020";
        String url = "http://" + hostname + "/";
-       totalRegions += hsi.getLoad().getNumberOfRegions();
-       totalRequests += hsi.getLoad().getNumberOfRequests() / interval;
-       long startCode = hsi.getStartCode();
+       // TODO: FIX
+       totalRegions += 0;
+       totalRequests += 0;
+       long startCode = serverName.getStartcode();
 %>
-<tr><td><a href="<%= url %>"><%= hostname %></a></td><td><%= startCode %></td><td><%= hsi.getLoad().toString(interval) %></td></tr>
+<tr><td><a href="<%= url %>"><%= hostname %></a></td><td><%= startCode %></td><td><%= 0 %></td></tr>
 <%   } %>
-<tr><th>Total: </th><td>servers: <%= serverToServerInfos.size() %></td><td>&nbsp;</td><td>requests=<%= totalRequests %>, regions=<%= totalRegions %></td></tr>
+<tr><th>Total: </th><td>servers: <%= servers.size() %></td><td>&nbsp;</td><td>requests=<%= totalRequests %>, regions=<%= totalRegions %></td></tr>
 </table>
 
 <p>Load is requests per second and count of regions loaded</p>

Modified: hbase/trunk/src/main/resources/hbase-webapps/master/table.jsp
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/resources/hbase-webapps/master/table.jsp?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/main/resources/hbase-webapps/master/table.jsp (original)
+++ hbase/trunk/src/main/resources/hbase-webapps/master/table.jsp Wed Apr 27 23:12:42 2011
@@ -6,6 +6,7 @@
   import="org.apache.hadoop.hbase.client.HBaseAdmin"
   import="org.apache.hadoop.hbase.client.HConnectionManager"
   import="org.apache.hadoop.hbase.HRegionInfo"
+  import="org.apache.hadoop.hbase.ServerName"
   import="org.apache.hadoop.hbase.HServerAddress"
   import="org.apache.hadoop.hbase.HServerInfo"
   import="org.apache.hadoop.hbase.HServerLoad"
@@ -22,7 +23,7 @@
   String tableName = request.getParameter("name");
   HTable table = new HTable(conf, tableName);
   String tableHeader = "<h2>Table Regions</h2><table><tr><th>Name</th><th>Region Server</th><th>Start Key</th><th>End Key</th><th>Requests</th></tr>";
-  HServerAddress rl = master.getCatalogTracker().getRootLocation();
+  ServerName rl = master.getCatalogTracker().getRootLocation();
   boolean showFragmentation = conf.getBoolean("hbase.master.ui.fragmentation.enabled", false);
   Map<String, Integer> frags = null;
   if (showFragmentation) {
@@ -83,8 +84,9 @@
   if(tableName.equals(Bytes.toString(HConstants.ROOT_TABLE_NAME))) {
 %>
 <%= tableHeader %>
+// HARDCODED FOR NOW TODO: FIX GET FROM ZK
 <%
-  int infoPort = master.getServerManager().getHServerInfo(rl).getInfoPort();
+  int infoPort = 60020; // HARDCODED FOR NOW -- TODO FIX
   String url = "http://" + rl.getHostname() + ":" + infoPort + "/";
 %>
 <tr>
@@ -102,9 +104,9 @@
 <%
   // NOTE: Presumes one meta region only.
   HRegionInfo meta = HRegionInfo.FIRST_META_REGIONINFO;
-  HServerAddress metaLocation = master.getCatalogTracker().getMetaLocation();
+  ServerName metaLocation = master.getCatalogTracker().getMetaLocation();
   for (int i = 0; i < 1; i++) {
-    int infoPort = master.getServerManager().getHServerInfo(metaLocation).getInfoPort();
+    int infoPort = 60020; // HARDCODED FOR NOW -- TODO FIX
     String url = "http://" + metaLocation.getHostname() + ":" + infoPort + "/";
 %>
 <tr>
@@ -141,7 +143,7 @@
   if(regions != null && regions.size() > 0) { %>
 <%=     tableHeader %>
 <%
-  for(Map.Entry<HRegionInfo, HServerAddress> hriEntry : regions.entrySet()) {
+  for (Map.Entry<HRegionInfo, HServerAddress> hriEntry : regions.entrySet()) {
     HRegionInfo regionInfo = hriEntry.getKey();
     HServerAddress addr = hriEntry.getValue();
     long req = 0;
@@ -150,16 +152,16 @@
     String urlRegionServer = null;
 
     if (addr != null) {
-      HServerInfo info = master.getServerManager().getHServerInfo(addr);
-      if (info != null) {
-        HServerLoad sl = info.getLoad();
+      HServerLoad sl = master.getServerManager().getLoad(addr);
+      if (sl != null) {
         Map<byte[], RegionLoad> map = sl.getRegionsLoad();
         if (map.containsKey(regionInfo.getRegionName())) {
           req = map.get(regionInfo.getRegionName()).getRequestsCount();
         }
-        infoPort = info.getInfoPort();
+        // This port might be wrong if RS actually ended up using something else.
+        int port = conf.getInt("hbase.regionserver.info.port", 60030);
         urlRegionServer =
-            "http://" + addr.getHostname().toString() + ":" + infoPort + "/";
+            "http://" + addr.getHostname().toString() + ":" + port + "/";
         Integer i = regDistribution.get(urlRegionServer);
         if (null == i) i = new Integer(0);
         regDistribution.put(urlRegionServer, i+1);

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java Wed Apr 27 23:12:42 2011
@@ -23,8 +23,6 @@ import java.io.IOException;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -39,7 +37,6 @@ import org.apache.hadoop.hbase.util.Byte
 import org.apache.hadoop.hbase.util.JVMClusterUtil;
 import org.apache.hadoop.hbase.util.Threads;
 import org.apache.hadoop.io.MapWritable;
-import org.apache.zookeeper.KeeperException;
 
 /**
  * This class creates a single process HBase cluster.
@@ -84,75 +81,6 @@ public class MiniHBaseCluster {
   }
 
   /**
-   * Override Master so can add inject behaviors testing.
-   */
-  public static class MiniHBaseClusterMaster extends HMaster {
-    private final Map<HServerInfo, List<HMsg>> messages =
-      new ConcurrentHashMap<HServerInfo, List<HMsg>>();
-
-    private final Map<HServerInfo, IOException> exceptions =
-      new ConcurrentHashMap<HServerInfo, IOException>();
-
-    public MiniHBaseClusterMaster(final Configuration conf)
-    throws IOException, KeeperException, InterruptedException {
-      super(conf);
-    }
-
-    /**
-     * Add a message to send to a regionserver next time it checks in.
-     * @param hsi RegionServer's HServerInfo.
-     * @param msg Message to add.
-     */
-    void addMessage(final HServerInfo hsi, HMsg msg) {
-      synchronized(this.messages) {
-        List<HMsg> hmsgs = this.messages.get(hsi);
-        if (hmsgs == null) {
-          hmsgs = new ArrayList<HMsg>();
-          this.messages.put(hsi, hmsgs);
-        }
-        hmsgs.add(msg);
-      }
-    }
-
-    void addException(final HServerInfo hsi, final IOException ex) {
-      this.exceptions.put(hsi, ex);
-    }
-
-    /**
-     * This implementation is special, exceptions will be treated first and
-     * message won't be sent back to the region servers even if some are
-     * specified.
-     * @param hsi the rs
-     * @param msgs Messages to add to
-     * @return
-     * @throws IOException will be throw if any added for this region server
-     */
-    @Override
-    protected HMsg[] adornRegionServerAnswer(final HServerInfo hsi,
-        final HMsg[] msgs) throws IOException {
-      IOException ex = this.exceptions.remove(hsi);
-      if (ex != null) {
-        throw ex;
-      }
-      HMsg [] answerMsgs = msgs;
-      synchronized (this.messages) {
-        List<HMsg> hmsgs = this.messages.get(hsi);
-        if (hmsgs != null && !hmsgs.isEmpty()) {
-          int size = answerMsgs.length;
-          HMsg [] newAnswerMsgs = new HMsg[size + hmsgs.size()];
-          System.arraycopy(answerMsgs, 0, newAnswerMsgs, 0, answerMsgs.length);
-          for (int i = 0; i < hmsgs.size(); i++) {
-            newAnswerMsgs[answerMsgs.length + i] = hmsgs.get(i);
-          }
-          answerMsgs = newAnswerMsgs;
-          hmsgs.clear();
-        }
-      }
-      return super.adornRegionServerAnswer(hsi, answerMsgs);
-    }
-  }
-
-  /**
    * Subclass so can get at protected methods (none at moment).  Also, creates
    * a FileSystem instance per instantiation.  Adds a shutdown own FileSystem
    * on the way out. Shuts down own Filesystem only, not All filesystems as
@@ -176,10 +104,6 @@ public class MiniHBaseCluster {
       return super.closeRegion(region);
     }
 
-    public void setHServerInfo(final HServerInfo hsi) {
-      this.serverInfo = hsi;
-    }
-
     /*
      * @param c
      * @param currentfs We return this if we did not make a new one.
@@ -266,8 +190,7 @@ public class MiniHBaseCluster {
     try {
       // start up a LocalHBaseCluster
       hbaseCluster = new LocalHBaseCluster(conf, nMasterNodes, 0,
-          MiniHBaseCluster.MiniHBaseClusterMaster.class,
-          MiniHBaseCluster.MiniHBaseClusterRegionServer.class);
+        HMaster.class, MiniHBaseCluster.MiniHBaseClusterRegionServer.class);
 
       // manually add the regionservers as other users
       for (int i=0; i<nRegionNodes; i++) {
@@ -385,15 +308,6 @@ public class MiniHBaseCluster {
   }
 
   /**
-   * @return Returns the rpc address actually used by the currently active
-   * master server, because the supplied port is not necessarily the actual port
-   * used.
-   */
-  public HServerAddress getHMasterAddress() {
-    return this.hbaseCluster.getActiveMaster().getMasterAddress();
-  }
-
-  /**
    * Returns the current active master, if available.
    * @return the active HMaster, null if none is active.
    */
@@ -607,59 +521,6 @@ public class MiniHBaseCluster {
   }
 
   /**
-   * Add an exception to send when a region server checks back in
-   * @param serverNumber Which server to send it to
-   * @param ex The exception that will be sent
-   * @throws IOException
-   */
-  public void addExceptionToSendRegionServer(final int serverNumber,
-      IOException ex) throws IOException {
-    MiniHBaseClusterRegionServer hrs =
-      (MiniHBaseClusterRegionServer)getRegionServer(serverNumber);
-    addExceptionToSendRegionServer(hrs, ex);
-  }
-
-  /**
-   * Add an exception to send when a region server checks back in
-   * @param hrs Which server to send it to
-   * @param ex The exception that will be sent
-   * @throws IOException
-   */
-  public void addExceptionToSendRegionServer(
-      final MiniHBaseClusterRegionServer hrs, IOException ex)
-      throws IOException {
-    ((MiniHBaseClusterMaster)getMaster()).addException(hrs.getHServerInfo(),ex);
-  }
-
-  /**
-   * Add a message to include in the responses send a regionserver when it
-   * checks back in.
-   * @param serverNumber Which server to send it to.
-   * @param msg The MESSAGE
-   * @throws IOException
-   */
-  public void addMessageToSendRegionServer(final int serverNumber,
-    final HMsg msg)
-  throws IOException {
-    MiniHBaseClusterRegionServer hrs =
-      (MiniHBaseClusterRegionServer)getRegionServer(serverNumber);
-    addMessageToSendRegionServer(hrs, msg);
-  }
-
-  /**
-   * Add a message to include in the responses send a regionserver when it
-   * checks back in.
-   * @param hrs Which region server.
-   * @param msg The MESSAGE
-   * @throws IOException
-   */
-  public void addMessageToSendRegionServer(final MiniHBaseClusterRegionServer hrs,
-    final HMsg msg)
-  throws IOException {
-    ((MiniHBaseClusterMaster)getMaster()).addMessage(hrs.getHServerInfo(), msg);
-  }
-
-  /**
    * Counts the total numbers of regions being served by the currently online
    * region servers by asking each how many regions they have.  Does not look
    * at META at all.  Count includes catalog tables.
@@ -672,4 +533,4 @@ public class MiniHBaseCluster {
     }
     return count;
   }
-}
\ No newline at end of file
+}

Added: hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHRegionLocation.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHRegionLocation.java?rev=1097275&view=auto
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHRegionLocation.java (added)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHRegionLocation.java Wed Apr 27 23:12:42 2011
@@ -0,0 +1,67 @@
+/**
+ * Copyright 2011 The Apache Software Foundation
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class TestHRegionLocation {
+  @Test
+  public void testHashAndEqualsCode() {
+    ServerName hsa1 = new ServerName("localhost", 1234, -1L);
+    HRegionLocation hrl1 = new HRegionLocation(HRegionInfo.FIRST_META_REGIONINFO,
+      hsa1.getHostname(), hsa1.getPort());
+    HRegionLocation hrl2 = new HRegionLocation(HRegionInfo.FIRST_META_REGIONINFO,
+      hsa1.getHostname(), hsa1.getPort());
+    assertEquals(hrl1.hashCode(), hrl2.hashCode());
+    assertTrue(hrl1.equals(hrl2));
+    HRegionLocation hrl3 = new HRegionLocation(HRegionInfo.ROOT_REGIONINFO,
+      hsa1.getHostname(), hsa1.getPort());
+    assertNotSame(hrl1, hrl3);
+    assertFalse(hrl1.equals(hrl3));
+  }
+
+  @Test
+  public void testToString() {
+    ServerName hsa1 = new ServerName("localhost", 1234, -1L);
+    HRegionLocation hrl1 = new HRegionLocation(HRegionInfo.FIRST_META_REGIONINFO,
+      hsa1.getHostname(), hsa1.getPort());
+    System.out.println(hrl1.toString());
+  }
+
+  @Test
+  public void testCompareTo() {
+    ServerName hsa1 = new ServerName("localhost", 1234, -1L);
+    HRegionLocation hsl1 =
+      new HRegionLocation(HRegionInfo.ROOT_REGIONINFO, hsa1.getHostname(), hsa1.getPort());
+    ServerName hsa2 = new ServerName("localhost", 1235, -1L);
+    HRegionLocation hsl2 =
+      new HRegionLocation(HRegionInfo.ROOT_REGIONINFO, hsa2.getHostname(), hsa2.getPort());
+    assertTrue(hsl1.compareTo(hsl1) == 0);
+    assertTrue(hsl2.compareTo(hsl2) == 0);
+    int compare1 = hsl1.compareTo(hsl2);
+    int compare2 = hsl2.compareTo(hsl1);
+    assertTrue((compare1 > 0)? compare2 < 0: compare2 > 0);
+  }
+}
\ No newline at end of file

Added: hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHServerAddress.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHServerAddress.java?rev=1097275&view=auto
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHServerAddress.java (added)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHServerAddress.java Wed Apr 27 23:12:42 2011
@@ -0,0 +1,83 @@
+/**
+ * Copyright 2011 The Apache Software Foundation
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+
+import org.apache.hadoop.hbase.util.Writables;
+import org.junit.Test;
+
+/**
+ * Tests for {@link HServerAddress}
+ */
+public class TestHServerAddress {
+  @Test
+  public void testHashCode() {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerAddress hsa2 = new HServerAddress("localhost", 1234);
+    assertEquals(hsa1.hashCode(), hsa2.hashCode());
+    HServerAddress hsa3 = new HServerAddress("localhost", 1235);
+    assertNotSame(hsa1.hashCode(), hsa3.hashCode());
+  }
+
+  @Test
+  public void testHServerAddress() {
+    new HServerAddress();
+  }
+
+  @Test
+  public void testHServerAddressInetSocketAddress() {
+    HServerAddress hsa1 =
+      new HServerAddress(new InetSocketAddress("localhost", 1234));
+    System.out.println(hsa1.toString());
+  }
+
+  @Test
+  public void testHServerAddressString() {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerAddress hsa2 =
+      new HServerAddress(new InetSocketAddress("localhost", 1234));
+    assertTrue(hsa1.equals(hsa2));
+  }
+
+  @Test
+  public void testHServerAddressHServerAddress() {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerAddress hsa2 = new HServerAddress(hsa1);
+    assertEquals(hsa1, hsa2);
+  }
+
+  @Test
+  public void testReadFields() throws IOException {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerAddress hsa2 = new HServerAddress("localhost", 1235);
+    byte [] bytes = Writables.getBytes(hsa1);
+    HServerAddress deserialized =
+      (HServerAddress)Writables.getWritable(bytes, new HServerAddress());
+    assertEquals(hsa1, deserialized);
+    bytes = Writables.getBytes(hsa2);
+    deserialized =
+      (HServerAddress)Writables.getWritable(bytes, new HServerAddress());
+    assertNotSame(hsa1, deserialized);
+  }
+}
\ No newline at end of file

Added: hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHServerInfo.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHServerInfo.java?rev=1097275&view=auto
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHServerInfo.java (added)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestHServerInfo.java Wed Apr 27 23:12:42 2011
@@ -0,0 +1,80 @@
+package org.apache.hadoop.hbase;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+
+import org.apache.hadoop.hbase.util.Writables;
+import org.junit.Test;
+
+public class TestHServerInfo {
+
+  @Test
+  public void testHashCodeAndEquals() {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerInfo hsi1 = new HServerInfo(hsa1, 1L, 5678);
+    HServerInfo hsi2 = new HServerInfo(hsa1, 1L, 5678);
+    HServerInfo hsi3 = new HServerInfo(hsa1, 2L, 5678);
+    HServerInfo hsi4 = new HServerInfo(hsa1, 1L, 5677);
+    HServerAddress hsa2 = new HServerAddress("localhost", 1235);
+    HServerInfo hsi5 = new HServerInfo(hsa2, 1L, 5678);
+    assertEquals(hsi1.hashCode(), hsi2.hashCode());
+    assertTrue(hsi1.equals(hsi2));
+    assertNotSame(hsi1.hashCode(), hsi3.hashCode());
+    assertFalse(hsi1.equals(hsi3));
+    assertNotSame(hsi1.hashCode(), hsi4.hashCode());
+    assertFalse(hsi1.equals(hsi4));
+    assertNotSame(hsi1.hashCode(), hsi5.hashCode());
+    assertFalse(hsi1.equals(hsi5));
+  }
+
+  @Test
+  public void testHServerInfoHServerInfo() {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerInfo hsi1 = new HServerInfo(hsa1, 1L, 5678);
+    HServerInfo hsi2 = new HServerInfo(hsi1);
+    assertEquals(hsi1, hsi2);
+  }
+
+  @Test
+  public void testGetServerAddress() {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerInfo hsi1 = new HServerInfo(hsa1, 1L, 5678);
+    assertEquals(hsi1.getServerAddress(), hsa1);
+  }
+
+  @Test
+  public void testToString() {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerInfo hsi1 = new HServerInfo(hsa1, 1L, 5678);
+    System.out.println(hsi1.toString());
+  }
+
+  @Test
+  public void testReadFields() throws IOException {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerInfo hsi1 = new HServerInfo(hsa1, 1L, 5678);
+    HServerAddress hsa2 = new HServerAddress("localhost", 1235);
+    HServerInfo hsi2 = new HServerInfo(hsa2, 1L, 5678);
+    byte [] bytes = Writables.getBytes(hsi1);
+    HServerInfo deserialized =
+      (HServerInfo)Writables.getWritable(bytes, new HServerInfo());
+    assertEquals(hsi1, deserialized);
+    bytes = Writables.getBytes(hsi2);
+    deserialized = (HServerInfo)Writables.getWritable(bytes, new HServerInfo());
+    assertNotSame(hsa1, deserialized);
+  }
+
+  @Test
+  public void testCompareTo() {
+    HServerAddress hsa1 = new HServerAddress("localhost", 1234);
+    HServerInfo hsi1 = new HServerInfo(hsa1, 1L, 5678);
+    HServerAddress hsa2 = new HServerAddress("localhost", 1235);
+    HServerInfo hsi2 = new HServerInfo(hsa2, 1L, 5678);
+    assertTrue(hsi1.compareTo(hsi1) == 0);
+    assertTrue(hsi2.compareTo(hsi2) == 0);
+    int compare1 = hsi1.compareTo(hsi2);
+    int compare2 = hsi2.compareTo(hsi1);
+    assertTrue((compare1 > 0)? compare2 < 0: compare2 > 0);
+  }
+}
\ No newline at end of file

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestRegionRebalancing.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestRegionRebalancing.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestRegionRebalancing.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestRegionRebalancing.java Wed Apr 27 23:12:42 2011
@@ -22,10 +22,15 @@ package org.apache.hadoop.hbase;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import org.apache.hadoop.hbase.catalog.CatalogTracker;
+import org.apache.hadoop.hbase.catalog.MetaReader;
+import org.apache.hadoop.hbase.client.HConnection;
+import org.apache.hadoop.hbase.client.HConnectionManager;
 import org.apache.hadoop.hbase.client.HTable;
 import org.apache.hadoop.hbase.client.Put;
 
@@ -33,7 +38,6 @@ import org.apache.hadoop.hbase.regionser
 import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.JVMClusterUtil;
-import org.apache.hadoop.hbase.util.Threads;
 
 /**
  * Test whether region rebalancing works. (HBASE-71)
@@ -93,8 +97,16 @@ public class TestRegionRebalancing exten
    * For HBASE-71. Try a few different configurations of starting and stopping
    * region servers to see if the assignment or regions is pretty balanced.
    * @throws IOException
+   * @throws InterruptedException
    */
-  public void testRebalancing() throws IOException {
+  public void testRebalancing() throws IOException, InterruptedException {
+    HConnection connection = HConnectionManager.getConnection(conf);
+    CatalogTracker ct = new CatalogTracker(connection);
+    ct.start();
+    Map<HRegionInfo, ServerName> regions = MetaReader.fullScan(ct);
+    for (Map.Entry<HRegionInfo, ServerName> e: regions.entrySet()) {
+      LOG.info(e);
+    }
     table = new HTable(conf, "test");
     assertEquals("Test table should have 20 regions",
       20, table.getStartKeys().length);
@@ -102,39 +114,34 @@ public class TestRegionRebalancing exten
     // verify that the region assignments are balanced to start out
     assertRegionsAreBalanced();
 
-    LOG.debug("Adding 2nd region server.");
     // add a region server - total of 2
-    LOG.info("Started=" +
+    LOG.info("Started second server=" +
       cluster.startRegionServer().getRegionServer().getServerName());
     cluster.getMaster().balance();
     assertRegionsAreBalanced();
 
     // add a region server - total of 3
-    LOG.debug("Adding 3rd region server.");
-    LOG.info("Started=" +
+    LOG.info("Started third server=" +
       cluster.startRegionServer().getRegionServer().getServerName());
     cluster.getMaster().balance();
     assertRegionsAreBalanced();
 
     // kill a region server - total of 2
-    LOG.debug("Killing the 3rd region server.");
-    LOG.info("Stopped=" + cluster.stopRegionServer(2, false));
+    LOG.info("Stopped third server=" + cluster.stopRegionServer(2, false));
     cluster.waitOnRegionServer(2);
     cluster.getMaster().balance();
     assertRegionsAreBalanced();
 
     // start two more region servers - total of 4
-    LOG.debug("Adding 3rd region server");
-    LOG.info("Started=" +
+    LOG.info("Readding third server=" +
       cluster.startRegionServer().getRegionServer().getServerName());
-    LOG.debug("Adding 4th region server");
-    LOG.info("Started=" +
+    LOG.info("Added fourth server=" +
       cluster.startRegionServer().getRegionServer().getServerName());
     cluster.getMaster().balance();
     assertRegionsAreBalanced();
 
     for (int i = 0; i < 6; i++){
-      LOG.debug("Adding " + (i + 5) + "th region server");
+      LOG.info("Adding " + (i + 5) + "th region server");
       cluster.startRegionServer();
     }
     cluster.getMaster().balance();
@@ -169,7 +176,7 @@ public class TestRegionRebalancing exten
 
       int regionCount = getRegionCount();
       List<HRegionServer> servers = getOnlineRegionServers();
-      double avg = cluster.getMaster().getServerManager().getAverageLoad();
+      double avg = cluster.getMaster().getAverageLoad();
       int avgLoadPlusSlop = (int)Math.ceil(avg * (1 + slop));
       int avgLoadMinusSlop = (int)Math.floor(avg * (1 - slop)) - 1;
       LOG.debug("There are " + servers.size() + " servers and " + regionCount

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestSerialization.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestSerialization.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestSerialization.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestSerialization.java Wed Apr 27 23:12:42 2011
@@ -130,19 +130,6 @@ public class TestSerialization {
       HConstants.EMPTY_END_ROW);
   }
 
-  /**
-   * Test ServerInfo serialization
-   * @throws Exception
-   */
-  @Test public void testServerInfo() throws Exception {
-    HServerInfo hsi = new HServerInfo(new HServerAddress("0.0.0.0:123"), -1,
-      1245, "default name");
-    byte [] b = Writables.getBytes(hsi);
-    HServerInfo deserializedHsi =
-      (HServerInfo)Writables.getWritable(b, new HServerInfo());
-    assertTrue(hsi.equals(deserializedHsi));
-  }
-
   @Test public void testPut() throws Exception{
     byte[] row = "row".getBytes();
     byte[] fam = "fam".getBytes();
@@ -584,4 +571,4 @@ public class TestSerialization {
         HConstants.REPLICATION_SCOPE_LOCAL));
     return htd;
   }
-}
\ No newline at end of file
+}

Added: hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestServerName.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestServerName.java?rev=1097275&view=auto
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestServerName.java (added)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/TestServerName.java Wed Apr 27 23:12:42 2011
@@ -0,0 +1,56 @@
+/**
+ * Copyright 2011 The Apache Software Foundation
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase;
+
+import static org.junit.Assert.*;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.junit.Test;
+
+public class TestServerName {
+  @Test
+  public void testServerName() {
+    ServerName sn = new ServerName("www.example.org", 1234, 5678);
+    ServerName sn2 = new ServerName("www.example.org", 1234, 5678);
+    ServerName sn3 = new ServerName("www.example.org", 1234, 56789);
+    assertTrue(sn.equals(sn2));
+    assertFalse(sn.equals(sn3));
+    assertEquals(sn.hashCode(), sn2.hashCode());
+    assertNotSame(sn.hashCode(), sn3.hashCode());
+    assertEquals(sn.toString(),
+      ServerName.getServerName("www.example.org", 1234, 5678));
+    assertEquals(sn.toString(),
+      ServerName.getServerName("www.example.org:1234", 5678));
+    assertEquals(sn.toString(),
+      "www.example.org" + ServerName.SERVERNAME_SEPARATOR +
+      "1234" + ServerName.SERVERNAME_SEPARATOR + "5678");
+  }
+
+  @Test
+  public void getServerStartcodeFromServerName() {
+    ServerName sn = new ServerName("www.example.org", 1234, 5678);
+    assertEquals(5678,
+      ServerName.getServerStartcodeFromServerName(sn.toString()));
+    assertNotSame(5677,
+      ServerName.getServerStartcodeFromServerName(sn.toString()));
+  }
+}
\ No newline at end of file

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTracker.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTracker.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTracker.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTracker.java Wed Apr 27 23:12:42 2011
@@ -36,9 +36,9 @@ import org.apache.hadoop.hbase.HBaseTest
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.HServerAddress;
-import org.apache.hadoop.hbase.HServerInfo;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.NotAllMetaRegionsOnlineException;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.client.Get;
 import org.apache.hadoop.hbase.client.HConnection;
 import org.apache.hadoop.hbase.client.Result;
@@ -63,8 +63,8 @@ import org.mockito.Mockito;
 public class TestCatalogTracker {
   private static final Log LOG = LogFactory.getLog(TestCatalogTracker.class);
   private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
-  private static final HServerAddress HSA =
-    new HServerAddress("example.org:1234");
+  private static final ServerName HSA =
+    new ServerName("example.org", 1234, System.currentTimeMillis());
   private ZooKeeperWatcher watcher;
   private Abortable abortable;
 
@@ -115,7 +115,7 @@ public class TestCatalogTracker {
     final CatalogTracker ct = constructAndStartCatalogTracker(connection);
     try {
       RootLocationEditor.setRootLocation(this.watcher,
-        new HServerAddress("example.com:1234"));
+        new ServerName("example.com", 1234, System.currentTimeMillis()));
     } finally {
       // Clean out root location or later tests will be confused... they presume
       // start fresh in zk.
@@ -131,9 +131,9 @@ public class TestCatalogTracker {
   @Test public void testInterruptWaitOnMetaAndRoot()
   throws IOException, InterruptedException {
     final CatalogTracker ct = constructAndStartCatalogTracker();
-    HServerAddress hsa = ct.getRootLocation();
+    ServerName hsa = ct.getRootLocation();
     Assert.assertNull(hsa);
-    HServerAddress meta = ct.getMetaLocation();
+    ServerName meta = ct.getMetaLocation();
     Assert.assertNull(meta);
     Thread t = new Thread() {
       @Override
@@ -169,7 +169,7 @@ public class TestCatalogTracker {
     final CatalogTracker ct = constructAndStartCatalogTracker(connection);
     try {
       RootLocationEditor.setRootLocation(this.watcher,
-        new HServerAddress("example.com:1234"));
+        new ServerName("example.com", 1234, System.currentTimeMillis()));
       Assert.assertFalse(ct.verifyMetaRegionLocation(100));
     } finally {
       // Clean out root location or later tests will be confused... they presume
@@ -200,7 +200,7 @@ public class TestCatalogTracker {
     final CatalogTracker ct = constructAndStartCatalogTracker(connection);
     try {
       RootLocationEditor.setRootLocation(this.watcher,
-        new HServerAddress("example.com:1234"));
+        new ServerName("example.com", 1234, System.currentTimeMillis()));
       Assert.assertFalse(ct.verifyRootRegionLocation(100));
     } finally {
       // Clean out root location or later tests will be confused... they presume
@@ -232,7 +232,7 @@ public class TestCatalogTracker {
   @Test public void testNoTimeoutWaitForRoot()
   throws IOException, InterruptedException, KeeperException {
     final CatalogTracker ct = constructAndStartCatalogTracker();
-    HServerAddress hsa = ct.getRootLocation();
+    ServerName hsa = ct.getRootLocation();
     Assert.assertNull(hsa);
 
     // Now test waiting on root location getting set.
@@ -246,7 +246,7 @@ public class TestCatalogTracker {
     Assert.assertTrue(ct.getRootLocation().equals(hsa));
   }
 
-  private HServerAddress setRootLocation() throws KeeperException {
+  private ServerName setRootLocation() throws KeeperException {
     RootLocationEditor.setRootLocation(this.watcher, HSA);
     return HSA;
   }
@@ -270,7 +270,7 @@ public class TestCatalogTracker {
       thenReturn(mockHRI);
 
     final CatalogTracker ct = constructAndStartCatalogTracker(connection);
-    HServerAddress hsa = ct.getMetaLocation();
+    ServerName hsa = ct.getMetaLocation();
     Assert.assertNull(hsa);
 
     // Now test waiting on meta location getting set.
@@ -300,8 +300,7 @@ public class TestCatalogTracker {
     // been assigned.
     String node = ct.getMetaNodeTracker().getNode();
     ZKUtil.createAndFailSilent(this.watcher, node);
-    MetaEditor.updateMetaLocation(ct, HRegionInfo.FIRST_META_REGIONINFO,
-      new HServerInfo(HSA, -1, "example.com"));
+    MetaEditor.updateMetaLocation(ct, HRegionInfo.FIRST_META_REGIONINFO, HSA);
     ZKUtil.deleteNode(this.watcher, node);
     // Join the thread... should exit shortly.
     t.join();

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTrackerOnCluster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTrackerOnCluster.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTrackerOnCluster.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestCatalogTrackerOnCluster.java Wed Apr 27 23:12:42 2011
@@ -23,7 +23,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hbase.Abortable;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.HServerAddress;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
 import org.junit.Test;
 
@@ -53,7 +53,8 @@ public class TestCatalogTrackerOnCluster
           LOG.error("Abort was called on 'bad root location writer'", e);
         }
     });
-    HServerAddress nonsense = new HServerAddress("example.org:1234");
+    ServerName nonsense =
+      new ServerName("example.org", 1234, System.currentTimeMillis());
     RootLocationEditor.setRootLocation(zookeeper, nonsense);
     // Bring back up the hbase cluster.  See if it can deal with nonsense root
     // location.

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestMetaReaderEditor.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestMetaReaderEditor.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestMetaReaderEditor.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/catalog/TestMetaReaderEditor.java Wed Apr 27 23:12:42 2011
@@ -32,7 +32,7 @@ import org.apache.hadoop.hbase.Abortable
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.HServerAddress;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.client.HConnection;
 import org.apache.hadoop.hbase.client.HConnectionManager;
@@ -116,7 +116,7 @@ public class TestMetaReaderEditor {
     // Test it works getting a region from user table.
     List<HRegionInfo> regions = MetaReader.getTableRegions(ct, nameBytes);
     assertEquals(regionCount, regions.size());
-    Pair<HRegionInfo, HServerAddress> pair =
+    Pair<HRegionInfo, ServerName> pair =
       MetaReader.getRegion(ct, regions.get(0).getRegionName());
     assertEquals(regions.get(0).getEncodedName(),
       pair.getFirst().getEncodedName());

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java Wed Apr 27 23:12:42 2011
@@ -121,6 +121,154 @@ public class TestFromClientSide {
   }
 
   /**
+   * HBASE-2468 use case 1 and 2: region info de/serialization
+   */
+   @Test
+   public void testRegionCacheDeSerialization() throws Exception {
+     // 1. test serialization.
+     LOG.info("Starting testRegionCacheDeSerialization");
+     final byte[] TABLENAME = Bytes.toBytes("testCachePrewarm2");
+     final byte[] FAMILY = Bytes.toBytes("family");
+     Configuration conf = TEST_UTIL.getConfiguration();
+     TEST_UTIL.createTable(TABLENAME, FAMILY);
+
+     // Set up test table:
+     // Create table:
+     HTable table = new HTable(conf, TABLENAME);
+
+     // Create multiple regions for this table
+     TEST_UTIL.createMultiRegions(table, FAMILY);
+     Scan s = new Scan();
+     ResultScanner scanner = table.getScanner(s);
+     while (scanner.next() != null) continue;
+
+     Path tempPath = new Path(HBaseTestingUtility.getTestDir(), "regions.dat");
+
+     final String tempFileName = tempPath.toString();
+
+     FileOutputStream fos = new FileOutputStream(tempFileName);
+     DataOutputStream dos = new DataOutputStream(fos);
+
+     // serialize the region info and output to a local file.
+     table.serializeRegionInfo(dos);
+     dos.flush();
+     dos.close();
+
+     // read a local file and deserialize the region info from it.
+     FileInputStream fis = new FileInputStream(tempFileName);
+     DataInputStream dis = new DataInputStream(fis);
+
+     Map<HRegionInfo, HServerAddress> deserRegions =
+       table.deserializeRegionInfo(dis);
+     dis.close();
+
+     // regions obtained from meta scanner.
+     Map<HRegionInfo, HServerAddress> loadedRegions =
+       table.getRegionsInfo();
+
+     // set the deserialized regions to the global cache.
+     table.getConnection().clearRegionCache();
+
+     table.getConnection().prewarmRegionCache(table.getTableName(),
+         deserRegions);
+
+     // verify whether the 2 maps are identical or not.
+     assertEquals("Number of cached region is incorrect",
+         HConnectionManager.getCachedRegionCount(conf, TABLENAME),
+         loadedRegions.size());
+
+     // verify each region is prefetched or not.
+     for (Map.Entry<HRegionInfo, HServerAddress> e: loadedRegions.entrySet()) {
+       HRegionInfo hri = e.getKey();
+       assertTrue(HConnectionManager.isRegionCached(conf,
+           hri.getTableDesc().getName(), hri.getStartKey()));
+     }
+
+     // delete the temp file
+     File f = new java.io.File(tempFileName);
+     f.delete();
+     LOG.info("Finishing testRegionCacheDeSerialization");
+   }
+
+  /**
+   * HBASE-2468 use case 3:
+   */
+  @Test
+  public void testRegionCachePreWarm() throws Exception {
+    LOG.info("Starting testRegionCachePreWarm");
+    final byte [] TABLENAME = Bytes.toBytes("testCachePrewarm");
+    Configuration conf = TEST_UTIL.getConfiguration();
+
+    // Set up test table:
+    // Create table:
+    TEST_UTIL.createTable(TABLENAME, FAMILY);
+
+    // disable region cache for the table.
+    HTable.setRegionCachePrefetch(conf, TABLENAME, false);
+    assertFalse("The table is disabled for region cache prefetch",
+        HTable.getRegionCachePrefetch(conf, TABLENAME));
+
+    HTable table = new HTable(conf, TABLENAME);
+
+    // create many regions for the table.
+    TEST_UTIL.createMultiRegions(table, FAMILY);
+    // This count effectively waits until the regions have been
+    // fully assigned
+    TEST_UTIL.countRows(table);
+    table.getConnection().clearRegionCache();
+    assertEquals("Clearing cache should have 0 cached ", 0,
+        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
+
+    // A Get is suppose to do a region lookup request
+    Get g = new Get(Bytes.toBytes("aaa"));
+    table.get(g);
+
+    // only one region should be cached if the cache prefetch is disabled.
+    assertEquals("Number of cached region is incorrect ", 1,
+        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
+
+    // now we enable cached prefetch.
+    HTable.setRegionCachePrefetch(conf, TABLENAME, true);
+    assertTrue("The table is enabled for region cache prefetch",
+        HTable.getRegionCachePrefetch(conf, TABLENAME));
+
+    HTable.setRegionCachePrefetch(conf, TABLENAME, false);
+    assertFalse("The table is disabled for region cache prefetch",
+        HTable.getRegionCachePrefetch(conf, TABLENAME));
+
+    HTable.setRegionCachePrefetch(conf, TABLENAME, true);
+    assertTrue("The table is enabled for region cache prefetch",
+        HTable.getRegionCachePrefetch(conf, TABLENAME));
+
+    table.getConnection().clearRegionCache();
+
+    assertEquals("Number of cached region is incorrect ", 0,
+        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
+
+    // if there is a cache miss, some additional regions should be prefetched.
+    Get g2 = new Get(Bytes.toBytes("bbb"));
+    table.get(g2);
+
+    // Get the configured number of cache read-ahead regions.
+    int prefetchRegionNumber = conf.getInt("hbase.client.prefetch.limit", 10);
+
+    // the total number of cached regions == region('aaa") + prefeched regions.
+    LOG.info("Testing how many regions cached");
+    assertEquals("Number of cached region is incorrect ", prefetchRegionNumber,
+        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
+
+    table.getConnection().clearRegionCache();
+
+    Get g3 = new Get(Bytes.toBytes("abc"));
+    table.get(g3);
+    assertEquals("Number of cached region is incorrect ", prefetchRegionNumber,
+        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
+
+    LOG.info("Finishing testRegionCachePreWarm");
+  }
+
+
+  /**
    * Verifies that getConfiguration returns the same Configuration object used
    * to create the HTable instance.
    */
@@ -3762,150 +3910,7 @@ public class TestFromClientSide {
     assertTrue(scan.getFamilyMap().containsKey(FAMILY));
   }
 
-  /**
-   * HBASE-2468 use case 1 and 2: region info de/serialization
-   */
-   @Test
-   public void testRegionCacheDeSerialization() throws Exception {
-     // 1. test serialization.
-     LOG.info("Starting testRegionCacheDeSerialization");
-     final byte[] TABLENAME = Bytes.toBytes("testCachePrewarm2");
-     final byte[] FAMILY = Bytes.toBytes("family");
-     Configuration conf = TEST_UTIL.getConfiguration();
-     TEST_UTIL.createTable(TABLENAME, FAMILY);
-
-     // Set up test table:
-     // Create table:
-     HTable table = new HTable(conf, TABLENAME);
-
-     // Create multiple regions for this table
-     TEST_UTIL.createMultiRegions(table, FAMILY);
-
-     Path tempPath = new Path(HBaseTestingUtility.getTestDir(), "regions.dat");
-
-     final String tempFileName = tempPath.toString();
-
-     FileOutputStream fos = new FileOutputStream(tempFileName);
-     DataOutputStream dos = new DataOutputStream(fos);
-
-     // serialize the region info and output to a local file.
-     table.serializeRegionInfo(dos);
-     dos.flush();
-     dos.close();
-
-     // read a local file and deserialize the region info from it.
-     FileInputStream fis = new FileInputStream(tempFileName);
-     DataInputStream dis = new DataInputStream(fis);
-
-     Map<HRegionInfo, HServerAddress> deserRegions =
-       table.deserializeRegionInfo(dis);
-     dis.close();
-
-     // regions obtained from meta scanner.
-     Map<HRegionInfo, HServerAddress> loadedRegions =
-       table.getRegionsInfo();
-
-     // set the deserialized regions to the global cache.
-     table.getConnection().clearRegionCache();
-
-     table.getConnection().prewarmRegionCache(table.getTableName(),
-         deserRegions);
-
-     // verify whether the 2 maps are identical or not.
-     assertEquals("Number of cached region is incorrect",
-         HConnectionManager.getCachedRegionCount(conf, TABLENAME),
-         loadedRegions.size());
-
-     // verify each region is prefetched or not.
-     for (Map.Entry<HRegionInfo, HServerAddress> e: loadedRegions.entrySet()) {
-       HRegionInfo hri = e.getKey();
-       assertTrue(HConnectionManager.isRegionCached(conf,
-           hri.getTableDesc().getName(), hri.getStartKey()));
-     }
-
-     // delete the temp file
-     File f = new java.io.File(tempFileName);
-     f.delete();
-     LOG.info("Finishing testRegionCacheDeSerialization");
-   }
-
-  /**
-   * HBASE-2468 use case 3:
-   */
-  @Test
-  public void testRegionCachePreWarm() throws Exception {
-    LOG.info("Starting testRegionCachePreWarm");
-    final byte [] TABLENAME = Bytes.toBytes("testCachePrewarm");
-    Configuration conf = TEST_UTIL.getConfiguration();
-
-    // Set up test table:
-    // Create table:
-    TEST_UTIL.createTable(TABLENAME, FAMILY);
-
-    // disable region cache for the table.
-    HTable.setRegionCachePrefetch(conf, TABLENAME, false);
-    assertFalse("The table is disabled for region cache prefetch",
-        HTable.getRegionCachePrefetch(conf, TABLENAME));
-
-    HTable table = new HTable(conf, TABLENAME);
-
-    // create many regions for the table.
-    TEST_UTIL.createMultiRegions(table, FAMILY);
-    // This count effectively waits until the regions have been
-    // fully assigned
-    TEST_UTIL.countRows(table);
-    table.getConnection().clearRegionCache();
-    assertEquals("Clearing cache should have 0 cached ", 0,
-        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
-
-    // A Get is suppose to do a region lookup request
-    Get g = new Get(Bytes.toBytes("aaa"));
-    table.get(g);
-
-    // only one region should be cached if the cache prefetch is disabled.
-    assertEquals("Number of cached region is incorrect ", 1,
-        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
-
-    // now we enable cached prefetch.
-    HTable.setRegionCachePrefetch(conf, TABLENAME, true);
-    assertTrue("The table is enabled for region cache prefetch",
-        HTable.getRegionCachePrefetch(conf, TABLENAME));
-
-    HTable.setRegionCachePrefetch(conf, TABLENAME, false);
-    assertFalse("The table is disabled for region cache prefetch",
-        HTable.getRegionCachePrefetch(conf, TABLENAME));
-
-    HTable.setRegionCachePrefetch(conf, TABLENAME, true);
-    assertTrue("The table is enabled for region cache prefetch",
-        HTable.getRegionCachePrefetch(conf, TABLENAME));
-
-    table.getConnection().clearRegionCache();
-
-    assertEquals("Number of cached region is incorrect ", 0,
-        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
-
-    // if there is a cache miss, some additional regions should be prefetched.
-    Get g2 = new Get(Bytes.toBytes("bbb"));
-    table.get(g2);
-
-    // Get the configured number of cache read-ahead regions.
-    int prefetchRegionNumber = conf.getInt("hbase.client.prefetch.limit", 10);
-
-    // the total number of cached regions == region('aaa") + prefeched regions.
-    LOG.info("Testing how many regions cached");
-    assertEquals("Number of cached region is incorrect ", prefetchRegionNumber,
-        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
-
-    table.getConnection().clearRegionCache();
-
-    Get g3 = new Get(Bytes.toBytes("abc"));
-    table.get(g3);
-    assertEquals("Number of cached region is incorrect ", prefetchRegionNumber,
-        HConnectionManager.getCachedRegionCount(conf, TABLENAME));
-
-    LOG.info("Finishing testRegionCachePreWarm");
-  }
-
+ 
   @Test
   public void testIncrement() throws Exception {
     LOG.info("Starting testIncrement");

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java Wed Apr 27 23:12:42 2011
@@ -20,15 +20,24 @@
 
 package org.apache.hadoop.hbase.coprocessor;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.HServerAddress;
-import org.apache.hadoop.hbase.HServerInfo;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.MiniHBaseCluster;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.UnknownRegionException;
 import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.client.HTable;
@@ -41,13 +50,6 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.*;
-
 /**
  * Tests invocation of the {@link org.apache.hadoop.hbase.coprocessor.MasterObserver}
  * interface hooks at all appropriate times during normal HMaster operations.
@@ -217,14 +219,14 @@ public class TestMasterObserver {
 
     @Override
     public void preMove(ObserverContext<MasterCoprocessorEnvironment> env,
-        HRegionInfo region, HServerInfo srcServer, HServerInfo destServer)
+        HRegionInfo region, ServerName srcServer, ServerName destServer)
     throws UnknownRegionException {
       preMoveCalled = true;
     }
 
     @Override
     public void postMove(ObserverContext<MasterCoprocessorEnvironment> env, HRegionInfo region,
-        HServerInfo srcServer, HServerInfo destServer)
+        ServerName srcServer, ServerName destServer)
     throws UnknownRegionException {
       postMoveCalled = true;
     }
@@ -445,15 +447,17 @@ public class TestMasterObserver {
 
     Map<HRegionInfo,HServerAddress> regions = table.getRegionsInfo();
     assertFalse(regions.isEmpty());
-    Map.Entry<HRegionInfo,HServerAddress> firstRegion =
+    Map.Entry<HRegionInfo, HServerAddress> firstRegion =
         regions.entrySet().iterator().next();
 
     // try to force a move
-    Collection<HServerInfo> servers = master.getClusterStatus().getServerInfo();
+    Collection<ServerName> servers = master.getClusterStatus().getServers();
     String destName = null;
-    for (HServerInfo info : servers) {
-      if (!info.getServerAddress().equals(firstRegion.getValue())) {
-        destName = info.getServerName();
+    for (ServerName info : servers) {
+      HServerAddress hsa =
+        new HServerAddress(info.getHostname(), info.getPort());
+      if (!hsa.equals(firstRegion.getValue())) {
+        destName = info.toString();
         break;
       }
     }
@@ -471,7 +475,7 @@ public class TestMasterObserver {
     master.balanceSwitch(false);
     // move half the open regions from RS 0 to RS 1
     HRegionServer rs = cluster.getRegionServer(0);
-    byte[] destRS = Bytes.toBytes(cluster.getRegionServer(1).getServerName());
+    byte[] destRS = Bytes.toBytes(cluster.getRegionServer(1).getServerName().toString());
     List<HRegionInfo> openRegions = rs.getOnlineRegions();
     int moveCnt = openRegions.size()/2;
     for (int i=0; i<moveCnt; i++) {

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java Wed Apr 27 23:12:42 2011
@@ -30,9 +30,10 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.HServerAddress;
 import org.apache.hadoop.hbase.Server;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.catalog.CatalogTracker;
+import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.zookeeper.ZKUtil;
 import org.apache.hadoop.hbase.zookeeper.ZooKeeperListener;
 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
@@ -67,7 +68,7 @@ public class TestActiveMasterManager {
     } catch(KeeperException.NoNodeException nne) {}
 
     // Create the master node with a dummy address
-    HServerAddress master = new HServerAddress("localhost", 1);
+    ServerName master = new ServerName("localhost", 1, System.currentTimeMillis());
     // Should not have a master yet
     DummyMaster dummyMaster = new DummyMaster();
     ActiveMasterManager activeMasterManager = new ActiveMasterManager(zk,
@@ -106,8 +107,10 @@ public class TestActiveMasterManager {
     } catch(KeeperException.NoNodeException nne) {}
 
     // Create the master node with a dummy address
-    HServerAddress firstMasterAddress = new HServerAddress("localhost", 1);
-    HServerAddress secondMasterAddress = new HServerAddress("localhost", 2);
+    ServerName firstMasterAddress =
+      new ServerName("localhost", 1, System.currentTimeMillis());
+    ServerName secondMasterAddress =
+      new ServerName("localhost", 2, System.currentTimeMillis());
 
     // Should not have a master yet
     DummyMaster ms1 = new DummyMaster();
@@ -177,8 +180,10 @@ public class TestActiveMasterManager {
    * @throws KeeperException
    */
   private void assertMaster(ZooKeeperWatcher zk,
-      HServerAddress expectedAddress) throws KeeperException {
-    HServerAddress readAddress = ZKUtil.getDataAsAddress(zk, zk.masterAddressZNode);
+      ServerName expectedAddress)
+  throws KeeperException {
+    ServerName readAddress =
+      new ServerName(Bytes.toString(ZKUtil.getData(zk, zk.masterAddressZNode)));
     assertNotNull(readAddress);
     assertTrue(expectedAddress.equals(readAddress));
   }
@@ -188,8 +193,7 @@ public class TestActiveMasterManager {
     ActiveMasterManager manager;
     boolean isActiveMaster;
 
-    public WaitToBeMasterThread(ZooKeeperWatcher zk,
-        HServerAddress address) {
+    public WaitToBeMasterThread(ZooKeeperWatcher zk, ServerName address) {
       this.manager = new ActiveMasterManager(zk, address,
           new DummyMaster());
       isActiveMaster = false;
@@ -248,7 +252,7 @@ public class TestActiveMasterManager {
     }
 
     @Override
-    public String getServerName() {
+    public ServerName getServerName() {
       return null;
     }
 

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java Wed Apr 27 23:12:42 2011
@@ -39,6 +39,7 @@ import org.apache.hadoop.hbase.HTableDes
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.NotAllMetaRegionsOnlineException;
 import org.apache.hadoop.hbase.Server;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.catalog.CatalogTracker;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.executor.ExecutorService;
@@ -84,8 +85,8 @@ public class TestCatalogJanitor {
     }
 
     @Override
-    public String getServerName() {
-      return "mockserver.example.org,1234,-1L";
+    public ServerName getServerName() {
+      return new ServerName("mockserver.example.org", 1234, -1L);
     }
 
     @Override
@@ -161,7 +162,7 @@ public class TestCatalogJanitor {
     }
 
     @Override
-    public String getServerName() {
+    public ServerName getServerName() {
       return null;
     }
 

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java Wed Apr 27 23:12:42 2011
@@ -19,6 +19,8 @@
  */
 package org.apache.hadoop.hbase.master;
 
+import java.net.InetAddress;
+
 import junit.framework.Assert;
 
 import org.apache.commons.logging.Log;
@@ -26,9 +28,8 @@ import org.apache.commons.logging.LogFac
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ClockOutOfSyncException;
 import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.HServerAddress;
-import org.apache.hadoop.hbase.HServerInfo;
 import org.apache.hadoop.hbase.Server;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.catalog.CatalogTracker;
 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
 import org.junit.Test;
@@ -53,7 +54,7 @@ public class TestClockSkewDetection {
       }
 
       @Override
-      public String getServerName() {
+      public ServerName getServerName() {
         return null;
       }
 
@@ -72,22 +73,20 @@ public class TestClockSkewDetection {
 
       @Override
       public void stop(String why) {
-      }}, null, null);
+      }}, null);
 
     LOG.debug("regionServerStartup 1");
-    HServerInfo hsi1 = new HServerInfo(new HServerAddress("example.org:1234"),
-        System.currentTimeMillis(), -1, "example.com");
-    sm.regionServerStartup(hsi1, System.currentTimeMillis());
+    InetAddress ia1 = InetAddress.getLocalHost();
+    sm.regionServerStartup(ia1, 1234, -1, System.currentTimeMillis());
 
     long maxSkew = 30000;
 
     try {
       LOG.debug("regionServerStartup 2");
-      HServerInfo hsi2 = new HServerInfo(new HServerAddress("example.org:1235"),
-        System.currentTimeMillis(), -1, "example.com");
-      sm.regionServerStartup(hsi2, System.currentTimeMillis() - maxSkew * 2);
+      InetAddress ia2 = InetAddress.getLocalHost();
+      sm.regionServerStartup(ia2, 1235, -1, System.currentTimeMillis() - maxSkew * 2);
       Assert.assertTrue("HMaster should have thrown an ClockOutOfSyncException "
-          + "but didn't.", false);
+        + "but didn't.", false);
     } catch(ClockOutOfSyncException e) {
       //we want an exception
       LOG.info("Recieved expected exception: "+e);

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestDeadServer.java Wed Apr 27 23:12:42 2011
@@ -20,34 +20,25 @@ package org.apache.hadoop.hbase.master;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import org.apache.hadoop.hbase.ServerName;
 import org.junit.Test;
 
 
 public class TestDeadServer {
   @Test public void testIsDead() {
-    DeadServer ds = new DeadServer(2);
-    final String hostname123 = "127.0.0.1,123,3";
-    assertFalse(ds.isDeadServer(hostname123, false));
-    assertFalse(ds.isDeadServer(hostname123, true));
+    DeadServer ds = new DeadServer();
+    final ServerName hostname123 = new ServerName("127.0.0.1", 123, 3L);
     ds.add(hostname123);
-    assertTrue(ds.isDeadServer(hostname123, false));
-    assertFalse(ds.isDeadServer("127.0.0.1:1", true));
-    assertFalse(ds.isDeadServer("127.0.0.1:1234", true));
-    assertTrue(ds.isDeadServer("127.0.0.1:123", true));
     assertTrue(ds.areDeadServersInProgress());
     ds.finish(hostname123);
     assertFalse(ds.areDeadServersInProgress());
-    final String hostname1234 = "127.0.0.2,1234,4";
+    final ServerName hostname1234 = new ServerName("127.0.0.2", 1234, 4L);
     ds.add(hostname1234);
-    assertTrue(ds.isDeadServer(hostname123, false));
-    assertTrue(ds.isDeadServer(hostname1234, false));
     assertTrue(ds.areDeadServersInProgress());
     ds.finish(hostname1234);
     assertFalse(ds.areDeadServersInProgress());
-    final String hostname12345 = "127.0.0.2,12345,4";
+    final ServerName hostname12345 = new ServerName("127.0.0.2", 12345, 4L);
     ds.add(hostname12345);
-    assertTrue(ds.isDeadServer(hostname1234, false));
-    assertTrue(ds.isDeadServer(hostname12345, false));
     assertTrue(ds.areDeadServersInProgress());
     ds.finish(hostname12345);
     assertFalse(ds.areDeadServersInProgress());
@@ -55,14 +46,14 @@ public class TestDeadServer {
     // Already dead =       127.0.0.1,9090,112321
     // Coming back alive =  127.0.0.1,9090,223341
 
-    final String deadServer = "127.0.0.1,9090,112321";
+    final ServerName deadServer = new ServerName("127.0.0.1", 9090, 112321L);
     assertFalse(ds.cleanPreviousInstance(deadServer));
     ds.add(deadServer);
     assertTrue(ds.isDeadServer(deadServer));
-    final String deadServerHostComingAlive = "127.0.0.1,9090,112321";
+    final ServerName deadServerHostComingAlive =
+      new ServerName("127.0.0.1", 9090, 112321L);
     assertTrue(ds.cleanPreviousInstance(deadServerHostComingAlive));
     assertFalse(ds.isDeadServer(deadServer));
     assertFalse(ds.cleanPreviousInstance(deadServerHostComingAlive));
-
   }
 }
\ No newline at end of file

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java?rev=1097275&r1=1097274&r2=1097275&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java Wed Apr 27 23:12:42 2011
@@ -19,11 +19,12 @@
  */
 package org.apache.hadoop.hbase.master;
 
-import static org.apache.hadoop.hbase.zookeeper.ZKSplitLog.Counters.*;
-
+import static org.apache.hadoop.hbase.zookeeper.ZKSplitLog.Counters.tot_wkr_final_transistion_failed;
+import static org.apache.hadoop.hbase.zookeeper.ZKSplitLog.Counters.tot_wkr_task_acquired;
+import static org.apache.hadoop.hbase.zookeeper.ZKSplitLog.Counters.tot_wkr_task_err;
+import static org.apache.hadoop.hbase.zookeeper.ZKSplitLog.Counters.tot_wkr_task_resigned;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 import java.io.IOException;
 import java.util.Iterator;
@@ -62,8 +63,8 @@ import org.apache.hadoop.hbase.zookeeper
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.zookeeper.KeeperException;
-import org.junit.Before;
 import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 
 public class TestDistributedLogSplitting {
@@ -156,7 +157,7 @@ public class TestDistributedLogSplitting
     HRegionServer hrs = rsts.get(0).getRegionServer();
     Path rootdir = FSUtils.getRootDir(conf);
     final Path logDir = new Path(rootdir,
-        HLog.getHLogDirectoryName(hrs.getServerName()));
+        HLog.getHLogDirectoryName(hrs.getServerName().toString()));
 
     installTable(new ZooKeeperWatcher(conf, "table-creation", null),
         "table", "family", 40);
@@ -205,7 +206,7 @@ public class TestDistributedLogSplitting
     HRegionServer hrs = rsts.get(0).getRegionServer();
     Path rootdir = FSUtils.getRootDir(conf);
     final Path logDir = new Path(rootdir,
-        HLog.getHLogDirectoryName(hrs.getServerName()));
+        HLog.getHLogDirectoryName(hrs.getServerName().toString()));
 
     installTable(new ZooKeeperWatcher(conf, "table-creation", null),
         "table", "family", 40);
@@ -253,11 +254,10 @@ public class TestDistributedLogSplitting
     HRegionServer hrs = rsts.get(0).getRegionServer();
     Path rootdir = FSUtils.getRootDir(conf);
     final Path logDir = new Path(rootdir,
-        HLog.getHLogDirectoryName(hrs.getServerName()));
+        HLog.getHLogDirectoryName(hrs.getServerName().toString()));
 
     installTable(new ZooKeeperWatcher(conf, "table-creation", null),
         "table", "family", 40);
-    byte[] table = Bytes.toBytes("table");
     makeHLog(hrs.getWAL(), hrs.getOnlineRegions(), "table",
         NUM_LOG_LINES, 100);
 
@@ -400,11 +400,6 @@ public class TestDistributedLogSplitting
     master.assignmentManager.waitUntilNoRegionsInTransition(60000);
   }
 
-  private void blockUntilRIT(ZooKeeperWatcher zkw)
-  throws KeeperException, InterruptedException {
-    ZKAssign.blockUntilRIT(zkw);
-  }
-
   private void putData(HRegion region, byte[] startRow, int numRows, byte [] qf,
       byte [] ...families)
   throws IOException {