Index: hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/RegionServerStatusProtos.java =================================================================== --- hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/RegionServerStatusProtos.java (revision 1491424) +++ hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/RegionServerStatusProtos.java (working copy) @@ -11,15 +11,19 @@ public interface RegionServerStartupRequestOrBuilder extends com.google.protobuf.MessageOrBuilder { - // required uint32 port = 1; + // required string hostName = 1; + boolean hasHostName(); + String getHostName(); + + // required uint32 port = 2; boolean hasPort(); int getPort(); - // required uint64 serverStartCode = 2; + // required uint64 serverStartCode = 3; boolean hasServerStartCode(); long getServerStartCode(); - // required uint64 serverCurrentTime = 3; + // required uint64 serverCurrentTime = 4; boolean hasServerCurrentTime(); long getServerCurrentTime(); } @@ -52,37 +56,70 @@ } private int bitField0_; - // required uint32 port = 1; - public static final int PORT_FIELD_NUMBER = 1; + // required string hostName = 1; + public static final int HOSTNAME_FIELD_NUMBER = 1; + private java.lang.Object hostName_; + public boolean hasHostName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public String getHostName() { + java.lang.Object ref = hostName_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + if (com.google.protobuf.Internal.isValidUtf8(bs)) { + hostName_ = s; + } + return s; + } + } + private com.google.protobuf.ByteString getHostNameBytes() { + java.lang.Object ref = hostName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((String) ref); + hostName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // required uint32 port = 2; + public static final int PORT_FIELD_NUMBER = 2; private int port_; public boolean hasPort() { - return ((bitField0_ & 0x00000001) == 0x00000001); + return ((bitField0_ & 0x00000002) == 0x00000002); } public int getPort() { return port_; } - // required uint64 serverStartCode = 2; - public static final int SERVERSTARTCODE_FIELD_NUMBER = 2; + // required uint64 serverStartCode = 3; + public static final int SERVERSTARTCODE_FIELD_NUMBER = 3; private long serverStartCode_; public boolean hasServerStartCode() { - return ((bitField0_ & 0x00000002) == 0x00000002); + return ((bitField0_ & 0x00000004) == 0x00000004); } public long getServerStartCode() { return serverStartCode_; } - // required uint64 serverCurrentTime = 3; - public static final int SERVERCURRENTTIME_FIELD_NUMBER = 3; + // required uint64 serverCurrentTime = 4; + public static final int SERVERCURRENTTIME_FIELD_NUMBER = 4; private long serverCurrentTime_; public boolean hasServerCurrentTime() { - return ((bitField0_ & 0x00000004) == 0x00000004); + return ((bitField0_ & 0x00000008) == 0x00000008); } public long getServerCurrentTime() { return serverCurrentTime_; } private void initFields() { + hostName_ = ""; port_ = 0; serverStartCode_ = 0L; serverCurrentTime_ = 0L; @@ -92,6 +129,10 @@ byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; + if (!hasHostName()) { + memoizedIsInitialized = 0; + return false; + } if (!hasPort()) { memoizedIsInitialized = 0; return false; @@ -112,14 +153,17 @@ throws java.io.IOException { getSerializedSize(); if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, port_); + output.writeBytes(1, getHostNameBytes()); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt64(2, serverStartCode_); + output.writeUInt32(2, port_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt64(3, serverCurrentTime_); + output.writeUInt64(3, serverStartCode_); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeUInt64(4, serverCurrentTime_); + } getUnknownFields().writeTo(output); } @@ -131,16 +175,20 @@ size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, port_); + .computeBytesSize(1, getHostNameBytes()); } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(2, serverStartCode_); + .computeUInt32Size(2, port_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(3, serverCurrentTime_); + .computeUInt64Size(3, serverStartCode_); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(4, serverCurrentTime_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -164,6 +212,11 @@ org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest other = (org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest) obj; boolean result = true; + result = result && (hasHostName() == other.hasHostName()); + if (hasHostName()) { + result = result && getHostName() + .equals(other.getHostName()); + } result = result && (hasPort() == other.hasPort()); if (hasPort()) { result = result && (getPort() @@ -188,6 +241,10 @@ public int hashCode() { int hash = 41; hash = (19 * hash) + getDescriptorForType().hashCode(); + if (hasHostName()) { + hash = (37 * hash) + HOSTNAME_FIELD_NUMBER; + hash = (53 * hash) + getHostName().hashCode(); + } if (hasPort()) { hash = (37 * hash) + PORT_FIELD_NUMBER; hash = (53 * hash) + getPort(); @@ -316,12 +373,14 @@ public Builder clear() { super.clear(); + hostName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); port_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000002); serverStartCode_ = 0L; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); serverCurrentTime_ = 0L; - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000008); return this; } @@ -363,14 +422,18 @@ if (((from_bitField0_ & 0x00000001) == 0x00000001)) { to_bitField0_ |= 0x00000001; } - result.port_ = port_; + result.hostName_ = hostName_; if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.serverStartCode_ = serverStartCode_; + result.port_ = port_; if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } + result.serverStartCode_ = serverStartCode_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } result.serverCurrentTime_ = serverCurrentTime_; result.bitField0_ = to_bitField0_; onBuilt(); @@ -388,6 +451,9 @@ public Builder mergeFrom(org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest other) { if (other == org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest.getDefaultInstance()) return this; + if (other.hasHostName()) { + setHostName(other.getHostName()); + } if (other.hasPort()) { setPort(other.getPort()); } @@ -402,6 +468,10 @@ } public final boolean isInitialized() { + if (!hasHostName()) { + + return false; + } if (!hasPort()) { return false; @@ -440,18 +510,23 @@ } break; } - case 8: { + case 10: { bitField0_ |= 0x00000001; - port_ = input.readUInt32(); + hostName_ = input.readBytes(); break; } case 16: { bitField0_ |= 0x00000002; - serverStartCode_ = input.readUInt64(); + port_ = input.readUInt32(); break; } case 24: { bitField0_ |= 0x00000004; + serverStartCode_ = input.readUInt64(); + break; + } + case 32: { + bitField0_ |= 0x00000008; serverCurrentTime_ = input.readUInt64(); break; } @@ -461,64 +536,100 @@ private int bitField0_; - // required uint32 port = 1; + // required string hostName = 1; + private java.lang.Object hostName_ = ""; + public boolean hasHostName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public String getHostName() { + java.lang.Object ref = hostName_; + if (!(ref instanceof String)) { + String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + hostName_ = s; + return s; + } else { + return (String) ref; + } + } + public Builder setHostName(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + hostName_ = value; + onChanged(); + return this; + } + public Builder clearHostName() { + bitField0_ = (bitField0_ & ~0x00000001); + hostName_ = getDefaultInstance().getHostName(); + onChanged(); + return this; + } + void setHostName(com.google.protobuf.ByteString value) { + bitField0_ |= 0x00000001; + hostName_ = value; + onChanged(); + } + + // required uint32 port = 2; private int port_ ; public boolean hasPort() { - return ((bitField0_ & 0x00000001) == 0x00000001); + return ((bitField0_ & 0x00000002) == 0x00000002); } public int getPort() { return port_; } public Builder setPort(int value) { - bitField0_ |= 0x00000001; + bitField0_ |= 0x00000002; port_ = value; onChanged(); return this; } public Builder clearPort() { - bitField0_ = (bitField0_ & ~0x00000001); + bitField0_ = (bitField0_ & ~0x00000002); port_ = 0; onChanged(); return this; } - // required uint64 serverStartCode = 2; + // required uint64 serverStartCode = 3; private long serverStartCode_ ; public boolean hasServerStartCode() { - return ((bitField0_ & 0x00000002) == 0x00000002); + return ((bitField0_ & 0x00000004) == 0x00000004); } public long getServerStartCode() { return serverStartCode_; } public Builder setServerStartCode(long value) { - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; serverStartCode_ = value; onChanged(); return this; } public Builder clearServerStartCode() { - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); serverStartCode_ = 0L; onChanged(); return this; } - // required uint64 serverCurrentTime = 3; + // required uint64 serverCurrentTime = 4; private long serverCurrentTime_ ; public boolean hasServerCurrentTime() { - return ((bitField0_ & 0x00000004) == 0x00000004); + return ((bitField0_ & 0x00000008) == 0x00000008); } public long getServerCurrentTime() { return serverCurrentTime_; } public Builder setServerCurrentTime(long value) { - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000008; serverCurrentTime_ = value; onChanged(); return this; } public Builder clearServerCurrentTime() { - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000008); serverCurrentTime_ = 0L; onChanged(); return this; @@ -4176,30 +4287,31 @@ static { java.lang.String[] descriptorData = { "\n\030RegionServerStatus.proto\032\013hbase.proto\"" + - "^\n\032RegionServerStartupRequest\022\014\n\004port\030\001 " + - "\002(\r\022\027\n\017serverStartCode\030\002 \002(\004\022\031\n\021serverCu" + - "rrentTime\030\003 \002(\004\"B\n\033RegionServerStartupRe" + - "sponse\022#\n\nmapEntries\030\001 \003(\0132\017.NameStringP" + - "air\"S\n\031RegionServerReportRequest\022\033\n\006serv" + - "er\030\001 \002(\0132\013.ServerName\022\031\n\004load\030\002 \001(\0132\013.Se" + - "rverLoad\"\034\n\032RegionServerReportResponse\"N" + - "\n\031ReportRSFatalErrorRequest\022\033\n\006server\030\001 " + - "\002(\0132\013.ServerName\022\024\n\014errorMessage\030\002 \002(\t\"\034", - "\n\032ReportRSFatalErrorResponse\"5\n\037GetLastF" + - "lushedSequenceIdRequest\022\022\n\nregionName\030\001 " + - "\002(\014\"A\n GetLastFlushedSequenceIdResponse\022" + - "\035\n\025lastFlushedSequenceId\030\001 \002(\0042\354\002\n\031Regio" + - "nServerStatusService\022P\n\023regionServerStar" + - "tup\022\033.RegionServerStartupRequest\032\034.Regio" + - "nServerStartupResponse\022M\n\022regionServerRe" + - "port\022\032.RegionServerReportRequest\032\033.Regio" + - "nServerReportResponse\022M\n\022reportRSFatalEr" + - "ror\022\032.ReportRSFatalErrorRequest\032\033.Report", - "RSFatalErrorResponse\022_\n\030getLastFlushedSe" + - "quenceId\022 .GetLastFlushedSequenceIdReque" + - "st\032!.GetLastFlushedSequenceIdResponseBN\n" + - "*org.apache.hadoop.hbase.protobuf.genera" + - "tedB\030RegionServerStatusProtosH\001\210\001\001\240\001\001" + "p\n\032RegionServerStartupRequest\022\020\n\010hostNam" + + "e\030\001 \002(\t\022\014\n\004port\030\002 \002(\r\022\027\n\017serverStartCode" + + "\030\003 \002(\004\022\031\n\021serverCurrentTime\030\004 \002(\004\"B\n\033Reg" + + "ionServerStartupResponse\022#\n\nmapEntries\030\001" + + " \003(\0132\017.NameStringPair\"S\n\031RegionServerRep" + + "ortRequest\022\033\n\006server\030\001 \002(\0132\013.ServerName\022" + + "\031\n\004load\030\002 \001(\0132\013.ServerLoad\"\034\n\032RegionServ" + + "erReportResponse\"N\n\031ReportRSFatalErrorRe" + + "quest\022\033\n\006server\030\001 \002(\0132\013.ServerName\022\024\n\014er", + "rorMessage\030\002 \002(\t\"\034\n\032ReportRSFatalErrorRe" + + "sponse\"5\n\037GetLastFlushedSequenceIdReques" + + "t\022\022\n\nregionName\030\001 \002(\014\"A\n GetLastFlushedS" + + "equenceIdResponse\022\035\n\025lastFlushedSequence" + + "Id\030\001 \002(\0042\354\002\n\031RegionServerStatusService\022P" + + "\n\023regionServerStartup\022\033.RegionServerStar" + + "tupRequest\032\034.RegionServerStartupResponse" + + "\022M\n\022regionServerReport\022\032.RegionServerRep" + + "ortRequest\032\033.RegionServerReportResponse\022" + + "M\n\022reportRSFatalError\022\032.ReportRSFatalErr", + "orRequest\032\033.ReportRSFatalErrorResponse\022_" + + "\n\030getLastFlushedSequenceId\022 .GetLastFlus" + + "hedSequenceIdRequest\032!.GetLastFlushedSeq" + + "uenceIdResponseBN\n*org.apache.hadoop.hba" + + "se.protobuf.generatedB\030RegionServerStatu" + + "sProtosH\001\210\001\001\240\001\001" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -4211,7 +4323,7 @@ internal_static_RegionServerStartupRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_RegionServerStartupRequest_descriptor, - new java.lang.String[] { "Port", "ServerStartCode", "ServerCurrentTime", }, + new java.lang.String[] { "HostName", "Port", "ServerStartCode", "ServerCurrentTime", }, org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest.class, org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest.Builder.class); internal_static_RegionServerStartupResponse_descriptor = Index: hbase-protocol/src/main/protobuf/RegionServerStatus.proto =================================================================== --- hbase-protocol/src/main/protobuf/RegionServerStatus.proto (revision 1491424) +++ hbase-protocol/src/main/protobuf/RegionServerStatus.proto (working copy) @@ -27,14 +27,15 @@ import "hbase.proto"; message RegionServerStartupRequest { + required string hostName = 1; /** Port number this regionserver is up on */ - required uint32 port = 1; + required uint32 port = 2; /** This servers' startcode */ - required uint64 serverStartCode = 2; + required uint64 serverStartCode = 3; /** Current time of the region server in ms */ - required uint64 serverCurrentTime = 3; + required uint64 serverCurrentTime = 4; } message RegionServerStartupResponse { Index: hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (revision 1491424) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (working copy) @@ -21,9 +21,7 @@ import java.io.IOException; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; -import java.net.InetAddress; import java.net.InetSocketAddress; -import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -69,7 +67,6 @@ import org.apache.hadoop.hbase.coprocessor.CoprocessorHost; import org.apache.hadoop.hbase.exceptions.DeserializationException; import org.apache.hadoop.hbase.exceptions.MasterNotRunningException; -import org.apache.hadoop.hbase.exceptions.NotAllMetaRegionsOnlineException; import org.apache.hadoop.hbase.exceptions.PleaseHoldException; import org.apache.hadoop.hbase.exceptions.TableNotDisabledException; import org.apache.hadoop.hbase.exceptions.TableNotFoundException; @@ -77,9 +74,9 @@ import org.apache.hadoop.hbase.exceptions.UnknownRegionException; import org.apache.hadoop.hbase.executor.ExecutorService; import org.apache.hadoop.hbase.executor.ExecutorType; -import org.apache.hadoop.hbase.ipc.RpcServerInterface; import org.apache.hadoop.hbase.ipc.RpcServer; import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface; +import org.apache.hadoop.hbase.ipc.RpcServerInterface; import org.apache.hadoop.hbase.ipc.ServerRpcController; import org.apache.hadoop.hbase.master.balancer.BalancerChore; import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore; @@ -1186,17 +1183,10 @@ RpcController controller, RegionServerStartupRequest request) throws ServiceException { // Register with server manager try { - InetAddress ia = getRemoteInetAddress(request.getPort(), request.getServerStartCode()); - ServerName rs = this.serverManager.regionServerStartup(ia, request.getPort(), - request.getServerStartCode(), request.getServerCurrentTime()); - + this.serverManager.regionServerStartup(getRemoteHostName(request), + request.getPort(), request.getServerStartCode(), request.getServerCurrentTime()); // Send back some config info RegionServerStartupResponse.Builder resp = createConfigurationSubset(); - NameStringPair.Builder entry = NameStringPair.newBuilder() - .setName(HConstants.KEY_FOR_HOSTNAME_SEEN_BY_MASTER) - .setValue(rs.getHostname()); - resp.addMapEntries(entry.build()); - return resp.build(); } catch (IOException ioe) { throw new ServiceException(ioe); @@ -1204,14 +1194,13 @@ } /** - * @return Get remote side's InetAddress - * @throws UnknownHostException + * @param request The RegionServerStartupRequest + * @return Get remote side's host name */ - InetAddress getRemoteInetAddress(final int port, final long serverStartCode) - throws UnknownHostException { + String getRemoteHostName(final RegionServerStartupRequest request) { // Do it out here in its own little method so can fake an address when // mocking up in tests. - return RpcServer.getRemoteIp(); + return request.getHostName(); } /** Index: hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (revision 1491424) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (working copy) @@ -19,7 +19,6 @@ package org.apache.hadoop.hbase.master; import java.io.IOException; -import java.net.InetAddress; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -46,7 +45,6 @@ import org.apache.hadoop.hbase.client.HConnectionManager; import org.apache.hadoop.hbase.client.RetriesExhaustedException; import org.apache.hadoop.hbase.exceptions.ClockOutOfSyncException; -import org.apache.hadoop.hbase.exceptions.PleaseHoldException; import org.apache.hadoop.hbase.exceptions.YouAreDeadException; import org.apache.hadoop.hbase.exceptions.ZooKeeperConnectionException; import org.apache.hadoop.hbase.master.handler.MetaServerShutdownHandler; @@ -193,14 +191,14 @@ /** * Let the server manager know a new regionserver has come online - * @param ia The remote address + * @param hostName The remote hostName * @param port The remote port * @param serverStartcode * @param serverCurrentTime The current time of the region server in ms * @return The ServerName we know this server as. * @throws IOException */ - ServerName regionServerStartup(final InetAddress ia, final int port, + ServerName regionServerStartup(final String hostName, final int port, final long serverStartcode, long serverCurrentTime) throws IOException { // Test for case where we get a region startup message from a regionserver @@ -210,7 +208,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(hostName, port, serverStartcode); checkClockSkew(sn, serverCurrentTime); checkIsDead(sn, "STARTUP"); if (!checkAlreadySameHostPortAndRecordNewServer( Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (revision 1491424) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (working copy) @@ -1140,25 +1140,15 @@ try { for (NameStringPair e : c.getMapEntriesList()) { String key = e.getName(); - // The hostname the master sees us as. - if (key.equals(HConstants.KEY_FOR_HOSTNAME_SEEN_BY_MASTER)) { - String hostnameFromMasterPOV = e.getValue(); - this.serverNameFromMasterPOV = new ServerName(hostnameFromMasterPOV, - this.isa.getPort(), this.startcode); - if (!this.serverNameFromMasterPOV.equals(this.isa.getHostName())) { - LOG.info("Master passed us a different hostname to use; was=" + - this.isa.getHostName() + ", but now=" + - this.serverNameFromMasterPOV.getHostname()); - } - continue; - } String value = e.getValue(); if (LOG.isDebugEnabled()) { LOG.debug("Config from master: " + key + "=" + value); } this.conf.set(key, value); } - + this.serverNameFromMasterPOV = new ServerName(this.isa.getHostName(), this.isa.getPort(), + this.startcode); + // hack! Maps DFSClient => RegionServer for logs. HDFS made this // config param for task trackers, but we can piggyback off of it. if (this.conf.get("mapred.task.id") == null) { @@ -1924,6 +1914,7 @@ long now = EnvironmentEdgeManager.currentTimeMillis(); int port = this.isa.getPort(); RegionServerStartupRequest.Builder request = RegionServerStartupRequest.newBuilder(); + request.setHostName(this.isa.getHostName()); request.setPort(port); request.setServerStartCode(this.startcode); request.setServerCurrentTime(now); Index: hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java (revision 1491424) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestClockSkewDetection.java (working copy) @@ -80,7 +80,7 @@ LOG.debug("regionServerStartup 1"); InetAddress ia1 = InetAddress.getLocalHost(); - sm.regionServerStartup(ia1, 1234, -1, System.currentTimeMillis()); + sm.regionServerStartup(ia1.getHostName(), 1234, -1, System.currentTimeMillis()); final Configuration c = HBaseConfiguration.create(); long maxSkew = c.getLong("hbase.master.maxclockskew", 30000); @@ -89,7 +89,7 @@ try { LOG.debug("regionServerStartup 2"); InetAddress ia2 = InetAddress.getLocalHost(); - sm.regionServerStartup(ia2, 1235, -1, System.currentTimeMillis() - maxSkew * 2); + sm.regionServerStartup(ia2.getHostName(), 1235, -1, System.currentTimeMillis() - maxSkew * 2); fail("HMaster should have thrown an ClockOutOfSyncException but didn't."); } catch(ClockOutOfSyncException e) { //we want an exception @@ -99,7 +99,7 @@ // make sure values above warning threshold but below max threshold don't kill LOG.debug("regionServerStartup 3"); InetAddress ia3 = InetAddress.getLocalHost(); - sm.regionServerStartup(ia3, 1236, -1, System.currentTimeMillis() - warningSkew * 2); + sm.regionServerStartup(ia3.getHostName(), 1236, -1, System.currentTimeMillis() - warningSkew * 2); } Index: hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java (revision 1491424) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java (working copy) @@ -23,26 +23,31 @@ import static org.junit.Assert.assertTrue; import java.io.IOException; -import java.net.InetAddress; -import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Abortable; -import org.apache.hadoop.hbase.exceptions.DeserializationException; import org.apache.hadoop.hbase.HBaseTestingUtility; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; +import org.apache.hadoop.hbase.MediumTests; +import org.apache.hadoop.hbase.Server; import org.apache.hadoop.hbase.ServerLoad; -import org.apache.hadoop.hbase.Server; import org.apache.hadoop.hbase.ServerName; -import org.apache.hadoop.hbase.exceptions.ZooKeeperConnectionException; import org.apache.hadoop.hbase.catalog.CatalogTracker; import org.apache.hadoop.hbase.catalog.MetaMockingUtil; import org.apache.hadoop.hbase.client.HConnection; import org.apache.hadoop.hbase.client.HConnectionTestingUtility; import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.exceptions.DeserializationException; +import org.apache.hadoop.hbase.exceptions.ZooKeeperConnectionException; +import org.apache.hadoop.hbase.monitoring.MonitoredTask; +import org.apache.hadoop.hbase.protobuf.ProtobufUtil; +import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.NameStringPair; +import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerReportRequest; +import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest; +import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse; import org.apache.hadoop.hbase.regionserver.RegionOpeningState; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.FSUtils; @@ -50,24 +55,18 @@ import org.apache.hadoop.hbase.zookeeper.MetaRegionTracker; import org.apache.hadoop.hbase.zookeeper.ZKUtil; import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher; -import org.apache.hadoop.hbase.MediumTests; import org.apache.zookeeper.KeeperException; -import org.apache.hadoop.hbase.monitoring.MonitoredTask; -import org.apache.hadoop.hbase.protobuf.ProtobufUtil; -import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.NameStringPair; -import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerReportRequest; -import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest; -import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse; -import com.google.protobuf.ServiceException; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.mockito.Mockito; -import org.junit.experimental.categories.Category; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.protobuf.ServiceException; + /** * Standup the master and fake it to test various aspects of master function. * Does NOT spin up a mini hbase nor mini dfs cluster testing master (it does @@ -175,12 +174,11 @@ // master does opening/closing regions. Also need to fake out the address // of the 'remote' mocked up regionservers. HMaster master = new HMaster(conf) { - InetAddress getRemoteInetAddress(final int port, final long serverStartCode) - throws UnknownHostException { + @Override + String getRemoteHostName(final RegionServerStartupRequest request) { // Return different address dependent on port passed. - ServerName sn = sns[port]; - return InetAddress.getByAddress(sn.getHostname(), - new byte [] {10, 0, 0, (byte)sn.getPort()}); + ServerName sn = sns[request.getPort()]; + return sn.getHostname(); } @Override @@ -262,11 +260,10 @@ // master does opening/closing regions. Also need to fake out the address // of the 'remote' mocked up regionservers. HMaster master = new HMaster(conf) { - InetAddress getRemoteInetAddress(final int port, final long serverStartCode) - throws UnknownHostException { + @Override + String getRemoteHostName(final RegionServerStartupRequest request) { // Interject an unchecked, nonsense InetAddress; i.e. no resolve. - return InetAddress.getByAddress(rs0.getServerName().getHostname(), - new byte [] {10, 0, 0, 0}); + return rs0.getServerName().getHostname(); } @Override @@ -306,6 +303,7 @@ // Fake master that there is a regionserver out there. Report in. RegionServerStartupRequest.Builder request = RegionServerStartupRequest.newBuilder(); + request.setHostName(rs0.getServerName().getHostname()); request.setPort(rs0.getServerName().getPort()); request.setServerStartCode(rs0.getServerName().getStartcode()); request.setServerCurrentTime(now);