[
https://issues.apache.org/jira/browse/HBASE-6228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13402091#comment-13402091
]
ramkrishna.s.vasudevan commented on HBASE-6228:
-----------------------------------------------
@Chunhui
Thanks for the testcase. I ran the testcase without patch. It passes many
times even with out the fix.
{code}
RegionTransition rt = RegionTransition.parseFrom(data);
if (rt.getEventType() ==
EventHandler.EventType.RS_ZK_REGION_OPENED) {
// Make a new region plan
master.getAssignmentManager().getRegionPlan(daughterARegionState,
daughterARegionState.getServerName(), true);
return;
}
{code}
This part of code may not work right. Because the node state can be changed
before that Thread.sleep is done.
And so if we don't update the region plan we cannot assure that double
assignment can be done. Even i was trying to write a testcase and was caught
up in a similar state. Good on you Chunhui.
> Fixup daughters twice cause daughter region assigned twice
> -----------------------------------------------------------
>
> Key: HBASE-6228
> URL: https://issues.apache.org/jira/browse/HBASE-6228
> Project: HBase
> Issue Type: Bug
> Components: master
> Reporter: chunhui shen
> Assignee: chunhui shen
> Fix For: 0.96.0
>
> Attachments: HBASE-6228.patch, HBASE-6228v2.patch,
> HBASE-6228v2.patch, HBASE-6228v3.patch
>
>
> First, how fixup daughters twice happen?
> 1.we will fixupDaughters at the last of HMaster#finishInitialization
> 2.ServerShutdownHandler will fixupDaughters when reassigning region through
> ServerShutdownHandler#processDeadRegion
> When fixupDaughters, we will added daughters to .META., but it coudn't
> prevent the above case, because FindDaughterVisitor.
> The detail is as the following:
> Suppose region A is a splitted parent region, and its daughter region B is
> missing
> 1.First, ServerShutdownHander thread fixup daughter, so add daughter region B
> to .META. with serverName=null, and assign the daughter.
> 2.Then, Master's initialization thread will also find the daughter region B
> is missing and assign it. It is because FindDaughterVisitor consider daughter
> is missing if its serverName=null
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira