You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by GitBox <gi...@apache.org> on 2019/08/12 08:19:33 UTC

[GitHub] [hbase] HuiHang-Yu commented on issue #456: HBASE-22631 assign failed may make gced parent region appear again

HuiHang-Yu commented on issue #456: HBASE-22631 assign failed may make gced parent region appear again
URL: https://github.com/apache/hbase/pull/456#issuecomment-520335860
 
 
   @saintstack  Thank you for your comment. 
   Yes i was cofused by how to write a UT for it . How can i  simulate that the region can not  be open for hdfs problem (maybe like Missing table descriptor for in my assignProcedure.txt 
   [assignProcedure.txt](https://github.com/apache/hbase/files/3491479/assignProcedure.txt)
    ) and can be opend in another regionserver . 
   The logic I modified is simple :
   RegionNode.offline()  makes region location to null and when the code  execute the following line  env.getAssignmentManager().undoRegionAsOpening(regionNode)  it will do nothing . So  the  regionstates in assignmanager will not remove this region from rs regions according to serverMap . So the serverMap will retain the relation rs tempt20 (for example in my assignProcedure.txt) <- region forever even the region is open in regionserver tempt21 (for example in my assignProcedure.txt) . 
   ![assign](https://user-images.githubusercontent.com/27949231/62852698-be3e5200-bd1c-11e9-8601-8deb51568dd2.png)
    When the rs tempt20 crash it will create a subprocedure assignprocedure for this region which may be open in another rs according to serverMap .  So the region info will be put into the meta table even if this region has been split and gced in another rs (delete from meta table) .
   ![splitAndGc](https://user-images.githubusercontent.com/27949231/62852716-d01ff500-bd1c-11e9-9a77-7414513aabbd.png)  
   ![serverCrash](https://user-images.githubusercontent.com/27949231/62852736-e5951f00-bd1c-11e9-8289-8fe9b38e9f76.png)
   
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services