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));