You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2008/07/03 21:27:10 UTC

svn commit: r673770 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java

Author: stack
Date: Thu Jul  3 12:27:09 2008
New Revision: 673770

URL: http://svn.apache.org/viewvc?rev=673770&view=rev
Log:
HBASE-703 Invalid regions listed by regionserver.jsp

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=673770&r1=673769&r2=673770&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Thu Jul  3 12:27:09 2008
@@ -166,6 +166,7 @@
    HBASE-712   midKey found compacting is the first, not necessarily the optimal
    HBASE-719   Find out why users have network problems in HBase and not in Hadoop
                and HConnectionManager (Jean-Daniel Cryans via Stack)
+   HBASE-703   Invalid regions listed by regionserver.jsp (Izaak Rubin via Stack)
    
   IMPROVEMENTS
    HBASE-559   MR example job to count table rows

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java?rev=673770&r1=673769&r2=673770&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java Thu Jul  3 12:27:09 2008
@@ -159,6 +159,9 @@
     // NOTE: there is no need for retry logic here. HTable does it for us.
     oldRegionInfo.setOffline(true);
     oldRegionInfo.setSplit(true);
+    // Inform the HRegionServer that the parent HRegion is no-longer online.
+    this.server.removeFromOnlineRegions(oldRegionInfo);
+    
     BatchUpdate update = new BatchUpdate(oldRegionInfo.getRegionName());
     update.put(COL_REGIONINFO, Writables.getBytes(oldRegionInfo));
     update.put(COL_SPLITA, Writables.getBytes(newRegions[0].getRegionInfo()));

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=673770&r1=673769&r2=673770&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Thu Jul  3 12:27:09 2008
@@ -904,15 +904,8 @@
   }
 
   void closeRegion(final HRegionInfo hri, final boolean reportWhenCompleted)
-  throws IOException {  
-    this.lock.writeLock().lock();
-    HRegion region = null;
-    try {
-      region = onlineRegions.remove(Bytes.mapKey(hri.getRegionName()));
-    } finally {
-      this.lock.writeLock().unlock();
-    }
-      
+  throws IOException {
+	HRegion region = this.removeFromOnlineRegions(hri);
     if (region != null) {
       region.close();
       if(reportWhenCompleted) {
@@ -1326,6 +1319,23 @@
     }
     return result;
   }
+  
+  /**
+   * This method removes HRegion corresponding to hri from the Map of onlineRegions.  
+   * 
+   * @param hri the HRegionInfo corresponding to the HRegion to-be-removed.
+   * @return the removed HRegion, or null if the HRegion was not in onlineRegions.
+   */
+  HRegion removeFromOnlineRegions(HRegionInfo hri) {
+    this.lock.writeLock().lock();
+    HRegion toReturn = null;
+    try {
+      toReturn = onlineRegions.remove(Bytes.mapKey(hri.getRegionName()));
+    } finally {
+      this.lock.writeLock().unlock();
+    }
+    return toReturn;
+  }
 
   /**
    * @return A new Map of online regions sorted by region size with the first