This patch does not update the comments. But just to show the changes that we need to make so that this problem is solved. But for this to happen
HBASE-6060 should go in and for trunk HBASe-6012 should go in.
How HBASe-6060 helps and how Chunhui's suggestion of waiting for master initialization helps is explained below
-> Now all the assignments that happen during which if any RS goes down things will be handled by
-> Taking the case of join cluster and SSH
Following scenarios to be considered
1> Clean cluster start up
2> Partially clean start up
In the case of clean cluster start up, we do bulk assign. Now while doing this if any RS goes down, as per Chunhui's suggestion we will wait for the master to initialize.
Now by this time the region plan would be populated considering the dead server by bulk assign. So when the master completes initialization, the SSH will see that few regions are there in regionplan with the dead server and so the new logic introduced in
HBASE-6060 will go ahead with assignment. no waiting needed.
For the 2nd case, if by the time the ProcessRIT decides to process the node the server would be dead, so may be previously
addToRITandCallClose(regionInfo, RegionState.State.OFFLINE, rt);
getRegionState(regionInfo, RegionState.State.OPENING, rt));
we were just populating to OPENING in the RIT map. But there would be no one to process this. Now as per the latest patch we just add a region plan.
Now even if the server goes down and SSH tries to process he will see the regionplan(with
HBASE-6060 and Chunhui's suggestion) and immediately trigger assignment.
We found that even for 'RS_ZK_REGION_OPENED' this may be needed.
We will also do a cluster testing.
Please review and provide your comments. Hope with these changes we need not depend on timeout monitor.
Please provide your thoughts on this. It would be nice if you can also test these patches
HBASE-6147, HBASE-6060 and HBASE-6012 together.