[ 
https://issues.apache.org/jira/browse/HBASE-24370?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Huaxiang Sun resolved HBASE-24370.
----------------------------------
    Fix Version/s: 2.4.0
                   2.3.0
                   3.0.0-alpha-1
       Resolution: Fixed

> Avoid aggressive MergeRegion and GCMultipleMergedRegionsProcedure 
> ------------------------------------------------------------------
>
>                 Key: HBASE-24370
>                 URL: https://issues.apache.org/jira/browse/HBASE-24370
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>            Reporter: Huaxiang Sun
>            Assignee: Huaxiang Sun
>            Priority: Major
>             Fix For: 3.0.0-alpha-1, 2.3.0, 2.4.0
>
>
> In 
> [https://github.com/apache/hbase/blob/a40a0322a73add68d9cb0579abacdd6a2e41e8fb/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java#L478,
>   
> |https://github.com/apache/hbase/blob/a40a0322a73add68d9cb0579abacdd6a2e41e8fb/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java#L478]
> prepareMergeRegion, it checks if one of merged parent regions is a merged 
> child region and has not been GCed. If it is ready to GC, it will kick off a 
> GCMultipleMergedRegionsProcedure and also start the MergeRegionProcedure. 
> There is a race condition here. If MergeRegionProcedure finishes first, it 
> will delete meta row for the merged child region. Then 
> GCMultipleMergedRegionsProcedure runs, and because the newly added check, it 
> thinks GC has been done and wont schedule GCRegionProcedure to clean up those 
> merged parent regions. The end result is that these merged parent regions are 
> left as orphans on Filesystem.
>  
> [https://github.com/apache/hbase/blob/a40a0322a73add68d9cb0579abacdd6a2e41e8fb/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/GCMultipleMergedRegionsProcedure.java#L105]
>  
> The proposed solution is to avoid being so aggressive, if it needs to kick 
> off GCMultipleMergedRegionsProcedure, then abort MergeRegionProcedure and 
> user can try MergeRegionProcedure later.
> [|https://github.com/apache/hbase/blob/a40a0322a73add68d9cb0579abacdd6a2e41e8fb/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java#L478]
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to