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 21:12:00 UTC

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

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

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


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

commit 2b2e6c77899f0adc65c601d8ed602591e8fe5986
Author: huaxiangsun <hu...@apache.org>
AuthorDate: Thu May 7 14:11:44 2020 -0700

    HBASE-24328 skip duplicate GCMultipleMergedRegionsProcedure while previous finished (#1672) (#1678)
    
    Signed-off-by: Huaxiang Sun<hu...@apache.org>
---
 .../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: