Index: src/main/jamon/org/apache/hbase/tmpl/master/MasterStatusTmpl.jamon =================================================================== --- src/main/jamon/org/apache/hbase/tmpl/master/MasterStatusTmpl.jamon (revision 1173941) +++ src/main/jamon/org/apache/hbase/tmpl/master/MasterStatusTmpl.jamon (working copy) @@ -198,7 +198,7 @@ for (ServerName serverName: serverNames) { // TODO: this is incorrect since this conf might differ from RS to RS // or be set to 0 to get ephemeral ports - int infoPort = master.getConfiguration().getInt("hbase.regionserver.info.port", 60030); + int infoPort = serverName.getWebport(); String hostname = serverName.getHostname() + ":" + infoPort; String url = "http://" + hostname + "/"; HServerLoad hsl = master.getServerManager().getLoad(serverName); Index: src/main/java/org/apache/hadoop/hbase/HConstants.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/HConstants.java (revision 1173941) +++ src/main/java/org/apache/hadoop/hbase/HConstants.java (working copy) @@ -124,6 +124,9 @@ /** Parameter name for port region server listens on. */ public static final String REGIONSERVER_PORT = "hbase.regionserver.port"; + + /** Parameter name for region server http port . */ + public static final String REGIONSERVER_INFO_PORT = "hbase.regionserver.info.port"; /** Default port region server listens on. */ public static final int DEFAULT_REGIONSERVER_PORT = 60020; Index: src/main/java/org/apache/hadoop/hbase/ipc/HMasterRegionInterface.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/ipc/HMasterRegionInterface.java (revision 1173941) +++ src/main/java/org/apache/hadoop/hbase/ipc/HMasterRegionInterface.java (working copy) @@ -45,13 +45,14 @@ * @param port Port number this regionserver is up on. * @param serverStartcode This servers' startcode. * @param serverCurrentTime The current time of the region server in ms + * @param webport Web Port number this regionserver http port * @throws IOException e * @return Configuration for the regionserver to use: e.g. filesystem, * hbase rootdir, the hostname to use creating the RegionServer ServerName, * etc. */ public MapWritable regionServerStartup(final int port, - final long serverStartcode, final long serverCurrentTime) + final long serverStartcode, final long serverCurrentTime,final int webport) throws IOException; /** Index: src/main/java/org/apache/hadoop/hbase/master/HMaster.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/HMaster.java (revision 1173941) +++ src/main/java/org/apache/hadoop/hbase/master/HMaster.java (working copy) @@ -732,12 +732,12 @@ @Override public MapWritable regionServerStartup(final int port, - final long serverStartCode, final long serverCurrentTime) + final long serverStartCode, final long serverCurrentTime,final int webport) throws IOException { // Register with server manager InetAddress ia = HBaseServer.getRemoteIp(); ServerName rs = this.serverManager.regionServerStartup(ia, port, - serverStartCode, serverCurrentTime); + serverStartCode, serverCurrentTime,webport); // Send back some config info MapWritable mw = createConfigurationSubset(); mw.put(new Text(HConstants.KEY_FOR_HOSTNAME_SEEN_BY_MASTER), Index: src/main/java/org/apache/hadoop/hbase/master/ServerManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (revision 1173941) +++ src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (working copy) @@ -120,7 +120,7 @@ * @throws IOException */ ServerName regionServerStartup(final InetAddress ia, final int port, - final long serverStartcode, long serverCurrentTime) + final long serverStartcode, long serverCurrentTime,final int webport) throws IOException { // Test for case where we get a region startup message from a regionserver // that has been quickly restarted but whose znode expiration handler has @@ -129,7 +129,7 @@ // is, reject the server and trigger its expiration. The next time it comes // in, it should have been removed from serverAddressToServerInfo and queued // for processing by ProcessServerShutdown. - ServerName sn = new ServerName(ia.getHostName(), port, serverStartcode); + ServerName sn = new ServerName(ia.getHostName(), port, serverStartcode,webport); checkClockSkew(sn, serverCurrentTime); checkIsDead(sn, "STARTUP"); checkAlreadySameHostPort(sn); Index: src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (revision 1173941) +++ src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (working copy) @@ -1631,7 +1631,8 @@ "with port=" + this.isa.getPort() + ", startcode=" + this.startcode); long now = EnvironmentEdgeManager.currentTimeMillis(); int port = this.isa.getPort(); - result = this.hbaseMaster.regionServerStartup(port, this.startcode, now); + int webport = conf.getInt(HConstants.REGIONSERVER_INFO_PORT,HConstants.DEFAULT_REGIONSERVER_INFOPORT); + result = this.hbaseMaster.regionServerStartup(port, this.startcode, now,webport); } catch (RemoteException e) { IOException ioe = e.unwrapRemoteException(); if (ioe instanceof ClockOutOfSyncException) { Index: src/main/java/org/apache/hadoop/hbase/ServerName.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/ServerName.java (revision 1173941) +++ src/main/java/org/apache/hadoop/hbase/ServerName.java (working copy) @@ -49,16 +49,26 @@ private final String servername; private final String hostname; private final int port; + private final int webport; private final long startcode; private byte [] bytes; - public ServerName(final String hostname, final int port, final long startcode) { + public ServerName(final String hostname, final int port, final long startcode,final int webport) { this.hostname = hostname; this.port = port; this.startcode = startcode; + this.webport = webport; this.servername = getServerName(hostname, port, startcode); } + public ServerName(final String hostname, final int port, final long startcode) { + this.hostname = hostname; + this.port = port; + this.startcode = startcode; + this.webport = 0; + this.servername = getServerName(hostname, port, startcode); + } + public ServerName(final String serverName) { this(parseHostname(serverName), parsePort(serverName), parseStartcode(serverName)); @@ -119,8 +129,12 @@ public long getStartcode() { return startcode; } + - /** +public int getWebport() { + return webport; +} +/** * @param hostName * @param port * @param startcode Index: src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java (revision 1173941) +++ src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java (working copy) @@ -82,14 +82,14 @@ LOG.debug("regionServerStartup 1"); InetAddress ia1 = InetAddress.getLocalHost(); - sm.regionServerStartup(ia1, 1234, -1, System.currentTimeMillis()); + sm.regionServerStartup(ia1, 1234, -1, System.currentTimeMillis(),1236); long maxSkew = 30000; try { LOG.debug("regionServerStartup 2"); InetAddress ia2 = InetAddress.getLocalHost(); - sm.regionServerStartup(ia2, 1235, -1, System.currentTimeMillis() - maxSkew * 2); + sm.regionServerStartup(ia2, 1235, -1, System.currentTimeMillis() - maxSkew * 2,1237); Assert.assertTrue("HMaster should have thrown an ClockOutOfSyncException " + "but didn't.", false); } catch(ClockOutOfSyncException e) {