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