You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2012/08/20 20:19:46 UTC

svn commit: r1375159 - in /hbase/branches/0.92/src: main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java

Author: tedyu
Date: Mon Aug 20 18:19:45 2012
New Revision: 1375159

URL: http://svn.apache.org/viewvc?rev=1375159&view=rev
Log:
HBASE-6608 Fix for HBASE-6160, META entries from daughters can be deleted before parent entries, shouldn't compare HRegionInfo's (Enis)


Modified:
    hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
    hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java

Modified: hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java?rev=1375159&r1=1375158&r2=1375159&view=diff
==============================================================================
--- hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java (original)
+++ hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java Mon Aug 20 18:19:45 2012
@@ -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<HRegionInfo> parentNotCleaned = new HashSet<HRegionInfo>(); //regions whose parents are still around
+    HashSet<String> parentNotCleaned = new HashSet<String>(); //regions whose parents are still around
     for (Map.Entry<HRegionInfo, Result> 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) {

Modified: hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java?rev=1375159&r1=1375158&r2=1375159&view=diff
==============================================================================
--- hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java (original)
+++ hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java Mon Aug 20 18:19:45 2012
@@ -514,6 +514,7 @@ public class TestCatalogJanitor {
     final Map<HRegionInfo, Result> splitParents =
         new TreeMap<HRegionInfo, Result>(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));