diff --git src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java index c1eb02a..c3fcb99 100644 --- src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java +++ src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java @@ -139,14 +139,16 @@ class CatalogJanitor extends Chore { // Now work on our list of found parents. See if any we can clean up. int cleaned = 0; - HashSet parentNotCleaned = new HashSet(); //regions whose parents are still around + HashSet parentNotCleaned = new HashSet(); //regions whose parents are still around for (Map.Entry e : splitParents.entrySet()) { - if (!parentNotCleaned.contains(e.getKey()) && cleanParent(e.getKey(), e.getValue())) { + if (!parentNotCleaned.contains(e.getKey().getEncodedName()) && cleanParent(e.getKey(), e.getValue())) { cleaned++; } else { // We could not clean the parent, so it's daughters should not be cleaned either (HBASE-6160) - parentNotCleaned.add(getDaughterRegionInfo(e.getValue(), HConstants.SPLITA_QUALIFIER)); - parentNotCleaned.add(getDaughterRegionInfo(e.getValue(), HConstants.SPLITB_QUALIFIER)); + parentNotCleaned.add(getDaughterRegionInfo( + e.getValue(), HConstants.SPLITA_QUALIFIER).getEncodedName()); + parentNotCleaned.add(getDaughterRegionInfo( + e.getValue(), HConstants.SPLITB_QUALIFIER).getEncodedName()); } } if (cleaned != 0) { diff --git src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java index 5d76a99..47bc119 100644 --- src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java +++ src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java @@ -519,6 +519,7 @@ public class TestCatalogJanitor { final Map splitParents = new TreeMap(new SplitParentFirstComparator()); splitParents.put(parent, makeResultFromHRegionInfo(parent, splita, splitb)); + splita.setOffline(true);//simulate that splita goes offline when it is split splitParents.put(splita, makeResultFromHRegionInfo(splita, splitaa, splitab)); CatalogJanitor janitor = spy(new CatalogJanitor(server, services));