[ https://issues.apache.org/jira/browse/HBASE-24942?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Duo Zhang resolved HBASE-24942. ------------------------------- Fix Version/s: 2.3.2 2.4.0 Hadoop Flags: Reviewed Resolution: Fixed Pushed to branch-2.3+. Thanks [~stack] for reviewing. > MergeTableRegionsProcedure should not call clean merge region > ------------------------------------------------------------- > > Key: HBASE-24942 > URL: https://issues.apache.org/jira/browse/HBASE-24942 > Project: HBase > Issue Type: Improvement > Components: proc-v2, Region Assignment > Reporter: Duo Zhang > Assignee: Duo Zhang > Priority: Major > Fix For: 3.0.0-alpha-1, 2.4.0, 2.3.2 > > > In MergeTableRegionsProcedure, we will call > CatalogJanitor.cleanMergeQualifier to test whether the regions we want to > merge still have merge qualifier. If so we will skip merge. > But the problem is that, in cleanMergeQualifier, we will call > cleanMergeRegion, where we may schedule GCMultipleMergedRegionsProcedure to > actually clean the merged regions. > I think the intention here is to speed up the cleaning of merged region. > CatalogJanitor, we have a alreadyRunning guard to prevent multiple scan at > the same time, to prevent scheduling duplicated > GCMultipleMergedRegionsProcedure for the same region. But if we call > cleanMergeQualifier directly from MergeTableRegionsProcedure, we may schedule > duplicated GCMultipleMergedRegionsProcedure as there is no guard to prevent > CatalogJanitor to run at the same time. > And there is also another problem that, even if you disable CatalogJanitor, > which means you want to stop cleaning meta, a call from > MergeTableRegionsProcedure could still clean the records in meta... > So I think here we should just check the qualifiers. If there are merge > qualifiers we just skip merging, without scheduling any procedures. -- This message was sent by Atlassian Jira (v8.3.4#803005)