You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ps...@apache.org on 2020/05/08 10:00:06 UTC

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

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

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


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

commit f903d2b7223c6cfffd8b495cfea08de8294fe82a
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 285891e..c27fc74 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
@@ -77,7 +77,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: