[ 
https://issues.apache.org/jira/browse/HBASE-20589?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16482269#comment-16482269
 ] 

Guanghao Zhang commented on HBASE-20589:
----------------------------------------

Ok. I found the problem: BaseLoadBalancer#retainAssignment method thought host 
hao-{color:#FF0000}optiplex{color}-7050 is not same with host 
hao-{color:#FF0000}OptiPlex{color}-7050.
{code:java}
ArrayListMultimap<String, ServerName> serversByHostname = 
ArrayListMultimap.create();
for (ServerName server : servers) {
  assignments.put(server, new ArrayList<>());
  serversByHostname.put(server.getHostname(), server);
}

for (Map.Entry<RegionInfo, ServerName> entry : regions.entrySet()) {
  RegionInfo region = entry.getKey();
  ServerName oldServerName = entry.getValue();
  List<ServerName> localServers = new ArrayList<>();
  if (oldServerName != null) {
    localServers = serversByHostname.get(oldServerName.getHostname());
  }
  // Because the host name is not same, the localServers is empty, so meta will 
be assigned to a random server.
  if (localServers.isEmpty()) {
    // No servers on the new cluster match up with this hostname, assign 
randomly, later.
    randomAssignRegions.add(region);
    if (oldServerName != null) {
      oldHostsNoLongerPresent.add(oldServerName.getHostname());
    }
  }
{code}

> Don't need to assign meta to a new RS when standby master become active
> -----------------------------------------------------------------------
>
>                 Key: HBASE-20589
>                 URL: https://issues.apache.org/jira/browse/HBASE-20589
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Guanghao Zhang
>            Assignee: Guanghao Zhang
>            Priority: Major
>         Attachments: HBASE-20589.master.001.patch, 
> HBASE-20589.master.002.patch, HBASE-20589.master.003.patch, 
> HBASE-20589.master.003.patch, HBASE-20589.master.004.patch, 
> HBASE-20589.master.005.patch
>
>
> I found this problem when I write ut for HBASE-20569. Now the master  
> finishActiveMasterInitialization introduce a new 
> RecoverMetaProcedure(HBASE-18261) and it has a sub procedure AssignProcedure. 
> AssignProcedure will skip assign a region when regions state is OPEN and 
> server is online. But for the new regiog state node is created with state 
> OFFLINE. So it will assign the meta to a new RS. And kill the old RS when old 
> RS report to master. This will make the master initialization cost a long 
> time. I will attatch a ut to show this. FYI [~stack]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to