[
https://issues.apache.org/jira/browse/HBASE-4074?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13061537#comment-13061537
]
stack commented on HBASE-4074:
------------------------------
I committed this as part of this issue:
{code}
Index: src/main/java/org/apache/hadoop/hbase/ServerName.java
===================================================================
--- src/main/java/org/apache/hadoop/hbase/ServerName.java (revision
1143654)
+++ src/main/java/org/apache/hadoop/hbase/ServerName.java (working copy)
@@ -184,7 +184,8 @@
@Override
public int compareTo(ServerName other) {
- int compare = this.getHostname().compareTo(other.getHostname());
+ int compare = this.getHostname().toLowerCase().
+ compareTo(other.getHostname().toLowerCase());
if (compare != 0) return compare;
compare = this.getPort() - other.getPort();
if (compare != 0) return compare;
{code}
This should do for TRUNK what the branch patch does (It changes HSA but HSA is
not really used in TRUNK. ServerName is used instead).
> When a RS has hostname with uppercase letter, there are two RS entries in
> master
> --------------------------------------------------------------------------------
>
> Key: HBASE-4074
> URL: https://issues.apache.org/jira/browse/HBASE-4074
> Project: HBase
> Issue Type: Bug
> Components: regionserver
> Affects Versions: 0.90.1, 0.90.2, 0.90.3
> Reporter: Weihua Jiang
> Assignee: Weihua Jiang
> Fix For: 0.90.4
>
> Attachments: 4074.patch, 4074.trunk
>
>
> When a RS has uppercase letter in its hostname, e.g.
> Harpertown08-15.sh.intel.com. Then, there will be two RS entries in master
> report, they are
> harpertown08-15.sh.intel.com
> Harpertown08-15.sh.intel.com
> This leads to wrong region allocation.
> This problem is caused by the implementation of java.net.InetSocketAddress.
> The logic is:
> 1. RS Harpertown08-15.sh.intel.com sends its DNS resolved hostname
> harpertown08-15.sh.intel.com to master for registration in
> HRegionServer.reportForDuty().
> 2. Master handles it and returns harpertown08-15.sh.intel.com via
> HServerAddress object to RS to notify it this new name (actually the same as
> the one reported by RS).
> 3. HServerAddress deserialize this object by first read out hostname as
> string ("harpertown08-15.sh.intel.com") and construct a InetSocketAddress
> object.
> 4. RS get the new name by call this InetSocketAddress.getHostName() method
> which returns Harpertown08-15.sh.intel.com instead.
> 5. In latter hearbeat communication (HRegionServer.tryRegionServerReport()),
> RS uses this new name (Harpertown08-15.sh.intel.com) to report to master and
> master regard it as a new RS. Thus, two RS entries exist.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira