You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ha...@apache.org on 2023/03/28 07:17:24 UTC
[hbase] branch master updated: HBASE-27333 Abort RS when the hostname is different from master seen (#4732)
This is an automated email from the ASF dual-hosted git repository.
haxiaolin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new f5437b9cebf HBASE-27333 Abort RS when the hostname is different from master seen (#4732)
f5437b9cebf is described below
commit f5437b9cebf99bc02c3c5a619e2a2470d7f961bb
Author: Xiaolin Ha <ha...@apache.org>
AuthorDate: Tue Mar 28 15:17:16 2023 +0800
HBASE-27333 Abort RS when the hostname is different from master seen (#4732)
Signed-off-by: Andrew Purtell <ap...@apache.org>
---
.../hadoop/hbase/regionserver/HRegionServer.java | 31 ++++++++++------------
1 file changed, 14 insertions(+), 17 deletions(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
index 5240df5c62a..4f6873541cb 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
@@ -1375,30 +1375,27 @@ public class HRegionServer extends HBaseServerBase<RSRpcServices>
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 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)
+ StringUtils.isBlank(useThisHostnameInstead) && getActiveMaster().isPresent()
+ && InetAddresses.isInetAddress(getActiveMaster().get().getHostname())
) {
+ expectedHostName = rpcServices.getSocketAddress().getAddress().getHostAddress();
+ }
+ boolean isHostnameConsist = StringUtils.isBlank(useThisHostnameInstead)
+ ? hostnameFromMasterPOV.equals(expectedHostName)
+ : hostnameFromMasterPOV.equals(useThisHostnameInstead);
+ if (!isHostnameConsist) {
String msg = "Master passed us a different hostname to use; was="
- + rpcServices.getSocketAddress().getHostName() + ", but now=" + hostnameFromMasterPOV;
+ + (StringUtils.isBlank(useThisHostnameInstead)
+ ? rpcServices.getSocketAddress().getHostName()
+ : this.useThisHostnameInstead)
+ + ", but now=" + hostnameFromMasterPOV;
LOG.error(msg);
+ throw new IOException(msg);
}
continue;
}