Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-24370

Avoid aggressive MergeRegion and GCMultipleMergedRegionsProcedure

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 3.0.0-alpha-1, 2.3.0
    • master
    • None

    Description

      In 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

       

       

      Attachments

        Activity

          People

            huaxiangsun Huaxiang Sun
            huaxiangsun Huaxiang Sun
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: