You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by hu...@apache.org on 2020/05/07 17:25:36 UTC

[hbase] branch branch-2 updated: HBASE-24328 skip duplicate GCMultipleMergedRegionsProcedure while previous finished (#1672)

This is an automated email from the ASF dual-hosted git repository.

huaxiangsun pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 735aa8b  HBASE-24328 skip duplicate GCMultipleMergedRegionsProcedure while previous finished (#1672)
735aa8b is described below

commit 735aa8bf9f840c4ca119b853fce43cf2c9523c39
Author: niuyulin <ny...@163.com>
AuthorDate: Thu May 7 12:25:25 2020 -0500

    HBASE-24328 skip duplicate GCMultipleMergedRegionsProcedure while previous finished (#1672)
    
    Co-authored-by: niuyulin <ni...@xiaomi.com>
---
 .../master/assignment/GCMultipleMergedRegionsProcedure.java   | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/GCMultipleMergedRegionsProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/GCMultipleMergedRegionsProcedure.java
index 8042d61..4fc5484 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/GCMultipleMergedRegionsProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/GCMultipleMergedRegionsProcedure.java
@@ -97,7 +97,16 @@ public class GCMultipleMergedRegionsProcedure extends
     try {
       switch (state) {
         case GC_MERGED_REGIONS_PREPARE:
-          // Nothing to do to prepare.
+          // If GCMultipleMergedRegionsProcedure processing is slower than the CatalogJanitor's scan
+          // interval, it will end resubmitting GCMultipleMergedRegionsProcedure for the same
+          // region, we can skip duplicate GCMultipleMergedRegionsProcedure while previous finished
+          List<RegionInfo> parents = MetaTableAccessor.getMergeRegions(
+            env.getMasterServices().getConnection(), mergedChild.getRegionName());
+          if (parents == null || parents.isEmpty()) {
+            LOG.info("Region=" + mergedChild.getShortNameToLog()
+                + " info:merge qualifier has been deleted");
+            return Flow.NO_MORE_STATE;
+          }
           setNextState(GCMergedRegionsState.GC_MERGED_REGIONS_PURGE);
           break;
         case GC_MERGED_REGIONS_PURGE: