diff --git src/main/java/org/apache/hadoop/hbase/ServerName.java src/main/java/org/apache/hadoop/hbase/ServerName.java index 645c2b9..d5f2fd7 100644 --- src/main/java/org/apache/hadoop/hbase/ServerName.java +++ src/main/java/org/apache/hadoop/hbase/ServerName.java @@ -65,7 +65,7 @@ public class ServerName implements Comparable { public static final String SERVERNAME_SEPARATOR = ","; public static Pattern SERVERNAME_PATTERN = - Pattern.compile(Addressing.VALID_HOSTNAME_REGEX_PREFIX + + Pattern.compile("[^" + SERVERNAME_SEPARATOR + "]+" + SERVERNAME_SEPARATOR + Addressing.VALID_PORT_REGEX + SERVERNAME_SEPARATOR + Addressing.VALID_PORT_REGEX + "$"); @@ -286,4 +286,4 @@ public class ServerName implements Comparable { return SERVERNAME_PATTERN.matcher(str).matches()? new ServerName(str): new ServerName(str, NON_STARTCODE); } -} +} \ No newline at end of file diff --git src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java index 6fe7a78..c46d5b2 100644 --- src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java +++ src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java @@ -42,7 +42,7 @@ import org.apache.zookeeper.KeeperException; * for the active master to fail. * *

This class is instantiated in the HMaster constructor and the method - * {@link #blockUntilBecomingActiveMaster()} is called to wait until becoming + * #blockUntilBecomingActiveMaster() is called to wait until becoming * the active master of the cluster. */ class ActiveMasterManager extends ZooKeeperListener { @@ -128,10 +128,11 @@ class ActiveMasterManager extends ZooKeeperListener { boolean blockUntilBecomingActiveMaster(MonitoredTask startupStatus) { startupStatus.setStatus("Trying to register in ZK as active master"); boolean cleanSetOfActiveMaster = true; - // Try to become the active master, watch if there is another master + // Try to become the active master, watch if there is another master. + // Write out our ServerName as versioned bytes. try { if (ZKUtil.createEphemeralNodeAndWatch(this.watcher, - this.watcher.masterAddressZNode, Bytes.toBytes(this.sn.toString()))) { + this.watcher.masterAddressZNode, sn.getVersionedBytes())) { // We are the master, return startupStatus.setStatus("Successfully registered as active master."); this.clusterHasActiveMaster.set(true); diff --git src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 627f725..d4549c5 100644 --- src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -1018,7 +1018,6 @@ public class HRegionServer implements HRegionInterface, HBaseRPCErrorHandler, /** * @param encodedRegionName * @return An instance of RegionLoad. - * @throws IOException */ public HServerLoad.RegionLoad createRegionLoad(final String encodedRegionName) { HRegion r = null; diff --git src/main/java/org/apache/hadoop/hbase/util/Addressing.java src/main/java/org/apache/hadoop/hbase/util/Addressing.java index 4fb7769..05c51ea 100644 --- src/main/java/org/apache/hadoop/hbase/util/Addressing.java +++ src/main/java/org/apache/hadoop/hbase/util/Addressing.java @@ -25,20 +25,6 @@ import java.net.InetSocketAddress; * Utility for network addresses, resolving and naming. */ public class Addressing { - /** - * Regex for RFC952 hostname matching. Does not have a '$" on the end. Can - * be used as prefix on a larger regex. - * @see http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address - */ - public static final String VALID_HOSTNAME_REGEX_PREFIX = - "^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\\-]*[A-Za-z0-9])"; - /** - * Regex for RFC952 hostname matching. - * @see http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address - */ - public static final String VALID_HOSTNAME_REGEX = - VALID_HOSTNAME_REGEX_PREFIX + "$"; - public static final String VALID_PORT_REGEX = "[\\d]+"; public static final String HOSTNAME_PORT_SEPARATOR = ":"; diff --git src/test/java/org/apache/hadoop/hbase/TestServerName.java src/test/java/org/apache/hadoop/hbase/TestServerName.java index e3bc432..985b714 100644 --- src/test/java/org/apache/hadoop/hbase/TestServerName.java +++ src/test/java/org/apache/hadoop/hbase/TestServerName.java @@ -33,10 +33,11 @@ public class TestServerName { public void testRegexPatterns() { assertTrue(Pattern.matches(Addressing.VALID_PORT_REGEX, "123")); assertFalse(Pattern.matches(Addressing.VALID_PORT_REGEX, "")); - assertTrue(Pattern.matches(Addressing.VALID_HOSTNAME_REGEX, "example.org")); - assertTrue(Pattern.matches(Addressing.VALID_HOSTNAME_REGEX, - "www1.example.org")); assertTrue(ServerName.SERVERNAME_PATTERN.matcher("www1.example.org,1234,567").matches()); + ServerName.parseServerName("a.b.c,58102,1319771740322"); + ServerName.parseServerName("192.168.1.199,58102,1319771740322"); + ServerName.parseServerName("a.b.c:58102"); + ServerName.parseServerName("192.168.1.199:58102"); } @Test public void testParseOfBytes() { diff --git src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java index d91d01f..8fbfcda 100644 --- src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java +++ src/test/java/org/apache/hadoop/hbase/master/TestActiveMasterManager.java @@ -187,7 +187,7 @@ public class TestActiveMasterManager { ServerName expectedAddress) throws KeeperException { ServerName readAddress = - new ServerName(Bytes.toString(ZKUtil.getData(zk, zk.masterAddressZNode))); + ServerName.parseVersionedServerName(ZKUtil.getData(zk, zk.masterAddressZNode)); assertNotNull(readAddress); assertTrue(expectedAddress.equals(readAddress)); }