[
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)