Skip to content

Commit

Permalink
HBASE-27333 Abort RS when the hostname is different from master seen
Browse files Browse the repository at this point in the history
  • Loading branch information
sunhelly committed Jan 29, 2023
1 parent 45fd3f6 commit c42e8d3
Showing 1 changed file with 13 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1375,30 +1375,21 @@ protected void handleReportForDutyResponse(final RegionServerStartupResponse c)
String hostnameFromMasterPOV = e.getValue();
this.serverName = ServerName.valueOf(hostnameFromMasterPOV,
rpcServices.getSocketAddress().getPort(), this.startcode);
if (
!StringUtils.isBlank(useThisHostnameInstead)
&& !hostnameFromMasterPOV.equals(useThisHostnameInstead)
) {
String msg = "Master passed us a different hostname to use; was="
+ this.useThisHostnameInstead + ", but now=" + hostnameFromMasterPOV;
LOG.error(msg);
throw new IOException(msg);
String expectedHostName = rpcServices.getSocketAddress().getHostName();
if (StringUtils.isBlank(useThisHostnameInstead) && getActiveMaster().isPresent()
&& InetAddresses.isInetAddress(getActiveMaster().get().getHostname())) {
expectedHostName = rpcServices.getSocketAddress().getAddress().getHostAddress();
}
// if Master use-ip is enabled, RegionServer use-ip will be enabled by default even if it
// is set to disable. so we will use the ip of the RegionServer to compare with the
// hostname passed by the Master, see HBASE-27304 for details.
InetSocketAddress isa = rpcServices.getSocketAddress();
// here getActiveMaster() is definitely not null.
String isaHostName = InetAddresses.isInetAddress(getActiveMaster().get().getHostname())
? isa.getAddress().getHostAddress()
: isa.getHostName();
if (
StringUtils.isBlank(useThisHostnameInstead)
&& !hostnameFromMasterPOV.equals(isaHostName)
) {
String msg = "Master passed us a different hostname to use; was="
+ rpcServices.getSocketAddress().getHostName() + ", but now=" + hostnameFromMasterPOV;
boolean isHostnameConsist = StringUtils.isBlank(useThisHostnameInstead) ?
hostnameFromMasterPOV.equals(expectedHostName) :
hostnameFromMasterPOV.equals(useThisHostnameInstead);
if (!isHostnameConsist) {
String msg = "Master passed us a different hostname to use; was=" + (StringUtils
.isBlank(useThisHostnameInstead) ?
rpcServices.getSocketAddress().getHostName() :
this.useThisHostnameInstead) + ", but now=" + hostnameFromMasterPOV;
LOG.error(msg);
throw new IOException(msg);
}
continue;
}
Expand Down

0 comments on commit c42e8d3

Please sign in to comment.