You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Michael Stack (Jira)" <ji...@apache.org> on 2020/08/24 15:12:00 UTC

[jira] [Comment Edited] (HBASE-24942) MergeTableRegionsProcedure should not call clean merge region

    [ https://issues.apache.org/jira/browse/HBASE-24942?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17183367#comment-17183367 ] 

Michael Stack edited comment on HBASE-24942 at 8/24/20, 3:11 PM:
-----------------------------------------------------------------

The change came in w/ HBASE-22777 where I added multi merge. IIRC, I was trying to keep keep all merge checking code out in CatalogJanitor (the cleanMergeQualifier first does checks if can clean up merge qualifiers). I missed this concern – that it could make for premature GC. Good find. How did you figure it?


was (Author: stack):
The change came in w/ HBASE-22777 where I added multi merge. IIRC, I was trying to keep keep all merge checking code out in CatalogJanitor. I missed this concern. Good find. How did you figure it?

> 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
>
>
> 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)