From 956c921a6c1a0f6cc9495d37eb395929432bd0d4 Mon Sep 17 00:00:00 2001 From: Esteban Gutierrez Date: Fri, 21 Jul 2017 14:13:13 -0500 Subject: [PATCH] HBASE-18025 CatalogJanitor should collect outdated RegionStates from the AM --- .../org/apache/hadoop/hbase/master/CatalogJanitor.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java index ba92c765e1..4fa370053e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java @@ -234,6 +234,9 @@ public class CatalogJanitor extends ScheduledChore { */ int scan() throws IOException { int result = 0; + ServerManager sm = this.services.getServerManager(); + AssignmentManager am = this.services.getAssignmentManager(); + try { if (!alreadyRunning.compareAndSet(false, true)) { LOG.debug("CatalogJanitor already running"); @@ -262,6 +265,11 @@ public class CatalogJanitor extends ScheduledChore { + " in merged region " + e.getKey().getShortNameToLog()); } else { if (cleanMergeRegion(e.getKey(), regionA, regionB)) { + // Remove from in-memory states + am.getRegionStates().deleteRegion(regionA); + am.getRegionStates().deleteRegion(regionB); + sm.removeRegion(regionA); + sm.removeRegion(regionB); result++; } } @@ -281,8 +289,8 @@ public class CatalogJanitor extends ScheduledChore { } if (!parentNotCleaned.contains(e.getKey().getEncodedName()) && - cleanParent(e.getKey(), e.getValue())) { - result++; + cleanParent(e.getKey(), e.getValue())) { + result++; } else { // We could not clean the parent, so it's daughters should not be // cleaned either (HBASE-6160) @@ -291,6 +299,11 @@ public class CatalogJanitor extends ScheduledChore { parentNotCleaned.add(daughters.getFirst().getEncodedName()); parentNotCleaned.add(daughters.getSecond().getEncodedName()); } + // Remove from in-memory states + if (e.getKey() != null) { + am.getRegionStates().deleteRegion(e.getKey()); + sm.removeRegion(e.getKey()); + } } return result; } finally { -- 2.13.3