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 2009/10/07 19:05:20 UTC

svn commit: r822804 - in /hadoop/hbase/trunk: ./ src/java/org/apache/hadoop/hbase/master/ src/java/org/apache/hadoop/hbase/regionserver/

Author: stack
Date: Wed Oct  7 17:05:20 2009
New Revision: 822804

URL: http://svn.apache.org/viewvc?rev=822804&view=rev
Log:
HBASE-1890 hbase-1506 where assignment is done at regionserver doesn't work

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java
    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=822804&r1=822803&r2=822804&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Wed Oct  7 17:05:20 2009
@@ -60,6 +60,7 @@
                hbase-1784)
    HBASE-1831  Scanning API must be reworked to allow for fully functional
                Filters client-side
+   HBASE-1890  hbase-1506 where assignment is done at regionserver doesn't work
 
   IMPROVEMENTS
    HBASE-1760  Cleanup TODOs in HTable

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java?rev=822804&r1=822803&r2=822804&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java Wed Oct  7 17:05:20 2009
@@ -341,17 +341,8 @@
     LOG.info("Assigning region " + regionName + " to " + sinfo.getServerName());
     rs.setPendingOpen(sinfo.getServerName());
     this.regionsInTransition.put(regionName, rs);
-    if (returnMsgs != null) {
-      returnMsgs.add(new HMsg(HMsg.Type.MSG_REGION_OPEN, rs.getRegionInfo()));
-    }
-  }
 
-  /**
-   * @param regionName
-   * @param sinfo
-   */
-  void doRegionAssignment(final String regionName, final HServerInfo sinfo) {
-    doRegionAssignment(this.regionsInTransition.get(regionName), sinfo, null);
+    returnMsgs.add(new HMsg(HMsg.Type.MSG_REGION_OPEN, rs.getRegionInfo()));
   }
 
   /*

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java?rev=822804&r1=822803&r2=822804&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java Wed Oct  7 17:05:20 2009
@@ -454,8 +454,7 @@
           break;
 
         case MSG_REPORT_SPLIT:
-          processSplitRegion(serverInfo, region, incomingMsgs[++i],
-            incomingMsgs[++i]);
+          processSplitRegion(region, incomingMsgs[++i], incomingMsgs[++i]);
           break;
 
         default:
@@ -497,26 +496,18 @@
    * @param splitB
    * @param returnMsgs
    */
-  private void processSplitRegion(final HServerInfo si, final HRegionInfo region,
-      final HMsg splitA, final HMsg splitB) {
+  private void processSplitRegion(HRegionInfo region, HMsg splitA, HMsg splitB) {
     synchronized (master.regionManager) {
       // Cancel any actions pending for the affected region.
       // This prevents the master from sending a SPLIT message if the table
       // has already split by the region server. 
-      this.master.regionManager.endActions(region.getRegionName());
-      // Region A is now opened immediately on the splitting server.  The message
-      // that its been successfully opened is probably just behind this split
-      // message.  Set up the master state so that its properly primed for the
-      // coming open message.
-      HRegionInfo a = splitA.getRegionInfo();
-      assignSplitDaughter(a);
-      this.master.regionManager.doRegionAssignment(a.getRegionNameAsString(), si);
-      // Region B will be assigned old-school style by the master.
+      master.regionManager.endActions(region.getRegionName());
+      assignSplitDaughter(splitA.getRegionInfo());
       assignSplitDaughter(splitB.getRegionInfo());
       if (region.isMetaTable()) {
         // A meta region has split.
-        this.master.regionManager.offlineMetaRegion(region.getStartKey());
-        this.master.regionManager.incrementNumMetaRegions();
+        master.regionManager.offlineMetaRegion(region.getStartKey());
+        master.regionManager.incrementNumMetaRegions();
       }
     }
   }
@@ -587,7 +578,7 @@
       if (duplicateAssignment) {
         if (LOG.isDebugEnabled()) {
           LOG.debug("region server " + serverInfo.getServerAddress().toString()
-            + " should not have opened region " + Bytes.toString(region.getRegionName()));
+              + " should not have opened region " + Bytes.toString(region.getRegionName()));
         }
 
         // This Region should not have been opened.

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=822804&r1=822803&r2=822804&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 Wed Oct  7 17:05:20 2009
@@ -219,8 +219,8 @@
         newRegions[i].getRegionInfo()));
       t.put(put);
     }
-    // Now tell the master about the new regions.  Note that we'll online 
-    // the A region ourselves on this server.  Master only has to online B.
+        
+    // Now tell the master about the new regions
     server.reportSplit(oldRegionInfo, newRegions[0].getRegionInfo(),
       newRegions[1].getRegionInfo());
     LOG.info("region split, META updated, and report to master all" +
@@ -228,15 +228,8 @@
       ", new regions: " + newRegions[0].toString() + ", " +
       newRegions[1].toString() + ". Split took " +
       StringUtils.formatTimeDiff(System.currentTimeMillis(), startTime));
-    // Server region A.  Let master assign region B.
-    HRegionInfo hri = newRegions[0].getRegionInfo();
-    HMsg msg = new HMsg(HMsg.Type.MSG_REGION_OPEN, hri,
-      Bytes.toBytes("Local immediate open"));
-    try {
-      this.server.toDo.put(new HRegionServer.ToDoEntry(msg));
-    } catch (InterruptedException e) {
-      throw new IOException("Failed queue of open of " + hri, e);
-    }
+    
+    // Do not serve the new regions. Let the Master assign them.
   }
 
   /**

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=822804&r1=822803&r2=822804&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 Wed Oct  7 17:05:20 2009
@@ -1396,7 +1396,7 @@
   /*
    * Data structure to hold a HMsg and retries count.
    */
-  static final class ToDoEntry {
+  private static final class ToDoEntry {
     protected final AtomicInteger tries = new AtomicInteger(0);
     protected final HMsg msg;