diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java index 2b7b917..f1c34ea 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java @@ -4245,6 +4245,13 @@ public class AssignmentManager extends ZooKeeperListener { errorMsg = onRegionMerge(serverName, code, hri, HRegionInfo.convert(transition.getRegionInfo(1)), HRegionInfo.convert(transition.getRegionInfo(2))); + if (org.apache.commons.lang.StringUtils.isEmpty(errorMsg)) { + try { + regionStateListener.onRegionMergeReverted(hri); + } catch (IOException exp) { + LOG.warn(StringUtils.stringifyException(exp)); + } + } break; default: diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/MasterQuotaManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/MasterQuotaManager.java index f837333..1cb47bf 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/MasterQuotaManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/MasterQuotaManager.java @@ -495,4 +495,11 @@ public class MasterQuotaManager implements RegionStateListener { this.namespaceQuotaManager.removeRegionFromNamespaceUsage(hri); } } + + @Override + public void onRegionMergeReverted(HRegionInfo hri) throws IOException { + if (enabled) { + this.namespaceQuotaManager.removeRegionFromNamespaceUsage(hri); + } + } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RegionStateListener.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RegionStateListener.java index 7d4ad19..f4386e1 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RegionStateListener.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RegionStateListener.java @@ -41,4 +41,11 @@ public interface RegionStateListener { * @throws IOException */ void onRegionMerged(HRegionInfo hri) throws IOException; + + /** + * Process region merge reverted event. + * @param hri An instance of HRegionInfo + * @throws IOException Signals that an I/O exception has occurred. + */ + void onRegionMergeReverted(HRegionInfo hri) throws IOException; }